mirror of https://gitee.com/bigwinds/arangodb
113 lines
3.6 KiB
Markdown
113 lines
3.6 KiB
Markdown
@startDocuBlock RestRemoveByKeys
|
|
@brief removes multiple documents by their keys
|
|
|
|
@RESTHEADER{PUT /_api/simple/remove-by-keys, Remove documents by their keys}
|
|
|
|
@HINTS
|
|
{% hint 'warning' %}
|
|
This route should no longer be used.
|
|
All endpoints for Simple Queries are deprecated from version 3.4.0 on.
|
|
They are superseded by AQL queries.
|
|
{% endhint %}
|
|
|
|
@RESTBODYPARAM{collection,string,required,string}
|
|
The name of the collection to look in for the documents to remove
|
|
|
|
@RESTBODYPARAM{keys,array,required,string}
|
|
array with the _keys of documents to remove.
|
|
|
|
@RESTBODYPARAM{options,object,optional,put_api_simple_remove_by_keys_opts}
|
|
a json object which can contains following attributes:
|
|
|
|
@RESTSTRUCT{waitForSync,put_api_simple_remove_by_keys_opts,boolean,optional,}
|
|
if set to true, then all removal operations will
|
|
instantly be synchronized to disk. If this is not specified, then the
|
|
collection's default sync behavior will be applied.
|
|
|
|
@RESTSTRUCT{silent,put_api_simple_remove_by_keys_opts,boolean,optional,}
|
|
if set to *false*, then the result will contain an additional
|
|
attribute *old* which contains an array with one entry for each
|
|
removed document. By default, these entries will have the *_id*,
|
|
*_key* and *_rev* attributes.
|
|
|
|
@RESTSTRUCT{returnOld,put_api_simple_remove_by_keys_opts,boolean,optional,}
|
|
if set to *true* and *silent* above is *false*, then the above
|
|
information about the removed documents contains the complete
|
|
removed documents.
|
|
|
|
@RESTDESCRIPTION
|
|
Looks up the documents in the specified collection using the array of keys
|
|
provided, and removes all documents from the collection whose keys are
|
|
contained in the *keys* array. Keys for which no document can be found in
|
|
the underlying collection are ignored, and no exception will be thrown for
|
|
them.
|
|
|
|
Equivalent AQL query (the RETURN clause is optional):
|
|
|
|
FOR key IN @keys REMOVE key IN @@collection
|
|
RETURN OLD
|
|
|
|
The body of the response contains a JSON object with information how many
|
|
documents were removed (and how many were not). The *removed* attribute will
|
|
contain the number of actually removed documents. The *ignored* attribute
|
|
will contain the number of keys in the request for which no matching document
|
|
could be found.
|
|
|
|
@RESTRETURNCODES
|
|
|
|
@RESTRETURNCODE{200}
|
|
is returned if the operation was carried out successfully. The number of removed
|
|
documents may still be 0 in this case if none of the specified document keys
|
|
were found in the collection.
|
|
|
|
@RESTRETURNCODE{404}
|
|
is returned if the collection was not found.
|
|
The response body contains an error document in this case.
|
|
|
|
@RESTRETURNCODE{405}
|
|
is returned if the operation was called with a different HTTP METHOD than PUT.
|
|
|
|
@EXAMPLES
|
|
|
|
@EXAMPLE_ARANGOSH_RUN{RestSimpleRemove}
|
|
var cn = "test";
|
|
~ db._drop(cn);
|
|
db._create(cn);
|
|
keys = [ ];
|
|
for (var i = 0; i < 10; ++i) {
|
|
db.test.insert({ _key: "test" + i });
|
|
keys.push("test" + i);
|
|
}
|
|
|
|
var url = "/_api/simple/remove-by-keys";
|
|
var data = { keys: keys, collection: cn };
|
|
var response = logCurlRequest('PUT', url, data);
|
|
|
|
assert(response.code === 200);
|
|
|
|
logJsonResponse(response);
|
|
~ db._drop(cn);
|
|
@END_EXAMPLE_ARANGOSH_RUN
|
|
|
|
@EXAMPLE_ARANGOSH_RUN{RestSimpleRemoveNotFound}
|
|
var cn = "test";
|
|
~ db._drop(cn);
|
|
db._create(cn);
|
|
keys = [ ];
|
|
for (var i = 0; i < 10; ++i) {
|
|
db.test.insert({ _key: "test" + i });
|
|
}
|
|
|
|
var url = "/_api/simple/remove-by-keys";
|
|
var data = { keys: [ "foo", "bar", "baz" ], collection: cn };
|
|
var response = logCurlRequest('PUT', url, data);
|
|
|
|
assert(response.code === 200);
|
|
|
|
logJsonResponse(response);
|
|
~ db._drop(cn);
|
|
@END_EXAMPLE_ARANGOSH_RUN
|
|
|
|
@endDocuBlock
|
|
|