Database Methods
Document
db._document(object)
The db._document()
method finds a document given an object object
containing the _id
attribute. The method returns
the document if it can be found.
An error is thrown if _rev
is specified but the document found has a
different revision already. An error is also thrown if no document exists
with the given _id
.
Please note that if the method is executed on the arangod server (e.g. from
inside a Foxx application), an immutable document object will be returned
for performance reasons. It is not possible to change attributes of this
immutable object. To update or patch the returned document, it needs to be
cloned/copied into a regular JavaScript object first. This is not necessary
if the db._document()
method is called from out of arangosh or from any other
client.
db._document(document-handle)
As before. Instead of object
a document-handle
can be passed as
first argument. No revision can be specified in this case.
Examples
Returns the document:
arangosh> db._document("example/12345");
{
"_key" : "12345",
"_id" : "example/12345",
"_rev" : "_fyvNH3----"
}
Exists
db._exists(object)
The db._exists()
method determines whether a document exists given an object
object
containing the _id
attribute.
An error is thrown if _rev
is specified but the document found has a
different revision already.
Instead of returning the found document or an error, this method will
only return an object with the attributes _id
, _key
and _rev
, or
false
if no document with the given _id
or _key
exists. It can
thus be used for easy existence checks.
This method will throw an error if used improperly, e.g. when called with a non-document handle, a non-document, or when a cross-collection request is performed.
db._exists(document-handle)
As before. Instead of object
a document-handle
can be passed as
first argument.
Replace
db._replace(selector, data)
Replaces an existing document described by the selector
, which must
be an object containing the _id
attribute. There must be
a document with that _id
in the current database. This
document is then replaced with the data
given as second argument.
Any attribute _id
, _key
or _rev
in data
is ignored.
The method returns a document with the attributes _id
, _key
, _rev
and _oldRev
. The attribute _id
contains the document handle of the
updated document, the attribute _rev
contains the document revision of
the updated document, the attribute _oldRev
contains the revision of
the old (now replaced) document.
If the selector contains a _rev
attribute, the method first checks
that the specified revision is the current revision of that document.
If not, there is a conflict, and an error is thrown.
collection.replace(selector, data, options)
As before, but options
must be an object that can contain the following
boolean attributes:
waitForSync
: One can force synchronization of the document creation operation to disk even in case that thewaitForSync
flag is been disabled for the entire collection. Thus, thewaitForSync
option can be used to force synchronization of just specific operations. To use this, set thewaitForSync
parameter totrue
. If thewaitForSync
parameter is not specified or set tofalse
, then the collection’s defaultwaitForSync
behavior is applied. ThewaitForSync
parameter cannot be used to disable synchronization for collections that have a defaultwaitForSync
value oftrue
.overwrite
: If this flag is set totrue
, a_rev
attribute in the selector is ignored.returnNew
: If this flag is set totrue
, the complete new document is returned in the output under the attributenew
.returnOld
: If this flag is set totrue
, the complete previous revision of the document is returned in the output under the attributeold
.silent
: If this flag is set totrue
, no output is returned.
db._replace(document-handle, data)
db._replace(document-handle, data, options)
As before. Instead of selector
a document-handle
can be passed as
first argument. No revision precondition is tested.
Examples
Create and replace a document:
Update
db._update(selector, data)
Updates an existing document described by the selector
, which must
be an object containing the _id
attribute. There must be
a document with that _id
in the current database. This
document is then patched with the data
given as second argument.
Any attribute _id
, _key
or _rev
in data
is ignored.
The method returns a document with the attributes _id
, _key
, _rev
and _oldRev
. The attribute _id
contains the document handle of the
updated document, the attribute _rev
contains the document revision of
the updated document, the attribute _oldRev
contains the revision of
the old (now updated) document.
If the selector contains a _rev
attribute, the method first checks
that the specified revision is the current revision of that document.
If not, there is a conflict, and an error is thrown.
db._update(selector, data, options)
As before, but options
must be an object that can contain the following
boolean attributes:
waitForSync
: One can force synchronization of the document creation operation to disk even in case that thewaitForSync
flag is been disabled for the entire collection. Thus, thewaitForSync
option can be used to force synchronization of just specific operations. To use this, set thewaitForSync
parameter totrue
. If thewaitForSync
parameter is not specified or set tofalse
, then the collection’s defaultwaitForSync
behavior is applied. ThewaitForSync
parameter cannot be used to disable synchronization for collections that have a defaultwaitForSync
value oftrue
.overwrite
: If this flag is set totrue
, a_rev
attribute in the selector is ignored.returnNew
: If this flag is set totrue
, the complete new document is returned in the output under the attributenew
.returnOld
: If this flag is set totrue
, the complete previous revision of the document is returned in the output under the attributeold
.silent
: If this flag is set totrue
, no output is returned.keepNull
: The optionalkeepNull
parameter can be used to modify the behavior when handlingnull
values. Normally,null
values are stored in the database. By setting thekeepNull
parameter tofalse
, this behavior can be changed so that all attributes indata
withnull
values will be removed from the target document.mergeObjects
: Controls whether objects (not arrays) will be merged if present in both the existing and the patch document. If set tofalse
, the value in the patch document will overwrite the existing document’s value. If set totrue
, objects will be merged. The default istrue
.
db._update(document-handle, data)
db._update(document-handle, data, options)
As before. Instead of selector
a document-handle
can be passed as
first argument. No revision precondition is tested.
Examples
Create and update a document:
Remove
db._remove(selector)
Removes a document described by the selector
, which must be an object
containing the _id
attribute. There must be a document with
that _id
in the current database. This document is then
removed.
The method returns a document with the attributes _id
, _key
and _rev
.
The attribute _id
contains the document handle of the
removed document, the attribute _rev
contains the document revision of
the removed document.
If the selector contains a _rev
attribute, the method first checks
that the specified revision is the current revision of that document.
If not, there is a conflict, and an error is thrown.
db._remove(selector, options)
As before, but options
must be an object that can contain the following
boolean attributes:
waitForSync
: One can force synchronization of the document creation operation to disk even in case that thewaitForSync
flag is been disabled for the entire collection. Thus, thewaitForSync
option can be used to force synchronization of just specific operations. To use this, set thewaitForSync
parameter totrue
. If thewaitForSync
parameter is not specified or set tofalse
, then the collection’s defaultwaitForSync
behavior is applied. ThewaitForSync
parameter cannot be used to disable synchronization for collections that have a defaultwaitForSync
value oftrue
.overwrite
: If this flag is set totrue
, a_rev
attribute in the selector is ignored.returnOld
: If this flag is set totrue
, the complete previous revision of the document is returned in the output under the attributeold
.silent
: If this flag is set totrue
, no output is returned.
db._remove(document-handle)
db._remove(document-handle, options)
As before. Instead of selector
a document-handle
can be passed as
first argument. No revision check is performed.
Examples
Remove a document:
Remove the document in the revision a1
with a conflict:
Remove a document using new signature: