1
0
Fork 0
arangodb/Documentation/DocuBlocks/Rest/Documents/delete_mutliple_documents.md

135 lines
4.4 KiB
Markdown

@startDocuBlock delete_remove_document_MULTI
@brief removes multiple document
@RESTHEADER{DELETE /_api/document/{collection},Removes multiple documents, removeDocument}
@RESTALLBODYPARAM{array,json,required}
A JSON array of strings or documents.
@RESTURLPARAMETERS
@RESTURLPARAM{collection,string,required}
Collection from which documents are removed.
@RESTQUERYPARAMETERS
@RESTQUERYPARAM{waitForSync,boolean,optional}
Wait until deletion operation has been synced to disk.
@RESTQUERYPARAM{returnOld,boolean,optional}
Return additionally the complete previous revision of the changed
document under the attribute *old* in the result.
@RESTQUERYPARAM{ignoreRevs,boolean,optional}
If set to *true*, ignore any *_rev* attribute in the selectors. No
revision check is performed.
@RESTDESCRIPTION
The body of the request is an array consisting of selectors for
documents. A selector can either be a string with a key or a string
with a document handle or an object with a *_key* attribute. This
API call removes all specified documents from *collection*. If the
selector is an object and has a *_rev* attribute, it is a
precondition that the actual revision of the removed document in the
collection is the specified one.
The body of the response is an array of the same length as the input
array. For each input selector, the output contains a JSON object
with the information about the outcome of the operation. If no error
occurred, an object is built in which the attribute *_id* contains
the known *document-handle* of the removed document, *_key* contains
the key which uniquely identifies a document in a given collection,
and the attribute *_rev* contains the document revision. In case of
an error, an object with the attribute *error* set to *true* and
*errorCode* set to the error code is built.
If the *waitForSync* parameter is not specified or set to *false*,
then the collection's default *waitForSync* behavior is applied.
The *waitForSync* query parameter cannot be used to disable
synchronization for collections that have a default *waitForSync*
value of *true*.
If the query parameter *returnOld* is *true*, then
the complete previous revision of the document
is returned under the *old* attribute in the result.
Note that if any precondition is violated or an error occurred with
some of the documents, the return code is still 200 or 202, but
the additional HTTP header *X-Arango-Error-Codes* is set, which
contains a map of the error codes that occurred together with their
multiplicities, as in: *1200:17,1205:10* which means that in 17
cases the error 1200 "revision conflict" and in 10 cases the error
1205 "illegal document handle" has happened.
@RESTRETURNCODES
@RESTRETURNCODE{200}
is returned if *waitForSync* was *true*.
@RESTRETURNCODE{202}
is returned if *waitForSync* was *false*.
@RESTRETURNCODE{404}
is returned if the collection was not found.
The response body contains an error document in this case.
@EXAMPLES
Using document handle:
@EXAMPLE_ARANGOSH_RUN{RestDocumentHandlerDeleteDocumentMulti}
var cn = "products";
db._drop(cn);
db._create(cn, { waitForSync: true });
var document = db.products.save({"hello":"world"});
var url = "/_api/document/" + document._id;
var response = logCurlRequest('DELETE', url);
assert(response.code === 200);
logJsonResponse(response);
~ db._drop(cn);
@END_EXAMPLE_ARANGOSH_RUN
Unknown document handle:
@EXAMPLE_ARANGOSH_RUN{RestDocumentHandlerDeleteDocumentUnknownHandleMulti}
var cn = "products";
db._drop(cn);
db._create(cn, { waitForSync: true });
var document = db.products.save({"hello":"world"});
db.products.remove(document._id);
var url = "/_api/document/" + document._id;
var response = logCurlRequest('DELETE', url);
assert(response.code === 404);
logJsonResponse(response);
~ db._drop(cn);
@END_EXAMPLE_ARANGOSH_RUN
Revision conflict:
@EXAMPLE_ARANGOSH_RUN{RestDocumentHandlerDeleteDocumentIfMatchOtherMulti}
var cn = "products";
db._drop(cn);
db._create(cn);
var document = db.products.save({"hello":"world"});
var document2 = db.products.save({"hello2":"world"});
var url = "/_api/document/" + document._id;
var headers = {"If-Match": "\"" + document2._rev + "\""};
var response = logCurlRequest('DELETE', url, "", headers);
assert(response.code === 412);
logJsonResponse(response);
~ db._drop(cn);
@END_EXAMPLE_ARANGOSH_RUN
@endDocuBlock