ArangoDB v3.4 reached End of Life (EOL) and is no longer supported.
This documentation is outdated. Please see the most recent version here: Latest Docs
Manipulating documents
These functions implement the HTTP API for manipulating documents.
collection.replace
async collection.replace(documentHandle, newValue, [opts]): Object
Replaces the content of the document with the given documentHandle with the given newValue and returns an object containing the document’s metadata.
Arguments
-
documentHandle:
string
The handle of the document to replace. This can either be the
_id
or the_key
of a document in the collection, or a document (i.e. an object with an_id
or_key
property). -
newValue:
Object
The new data of the document.
-
opts:
Object
(optional)If opts is set, it must be an object with any of the following properties:
-
waitForSync:
boolean
(Default:false
)Wait until the document has been synced to disk. Default:
false
. -
rev:
string
(optional)Only replace the document if it matches this revision.
-
policy:
string
(optional)This option has no effect in ArangoDB 3.0 and later.
Determines the behavior when the revision is not matched:
- if policy is set to
"last"
, the document will be replaced regardless of the revision. - if policy is set to
"error"
or not set, the replacement will fail with an error.
- if policy is set to
-
If a string is passed instead of an options object, it will be interpreted as the rev option.
For more information on the opts object, see the HTTP API documentation for working with documents.
Examples
const db = new Database();
const collection = db.collection("some-collection");
const data = { number: 1, hello: "world" };
const info1 = await collection.save(data);
const info2 = await collection.replace(info1, { number: 2 });
assert.equal(info2._id, info1._id);
assert.notEqual(info2._rev, info1._rev);
const doc = await collection.document(info1);
assert.equal(doc._id, info1._id);
assert.equal(doc._rev, info2._rev);
assert.equal(doc.number, 2);
assert.equal(doc.hello, undefined);
collection.update
async collection.update(documentHandle, newValue, [opts]): Object
Updates (merges) the content of the document with the given documentHandle with the given newValue and returns an object containing the document’s metadata.
Arguments
-
documentHandle:
string
Handle of the document to update. This can be either the
_id
or the_key
of a document in the collection, or a document (i.e. an object with an_id
or_key
property). -
newValue:
Object
The new data of the document.
-
opts:
Object
(optional)If opts is set, it must be an object with any of the following properties:
-
waitForSync:
boolean
(Default:false
)Wait until document has been synced to disk.
-
keepNull:
boolean
(Default:true
)If set to
false
, properties with a value ofnull
indicate that a property should be deleted. -
mergeObjects:
boolean
(Default:true
)If set to
false
, object properties that already exist in the old document will be overwritten rather than merged. This does not affect arrays. -
returnOld:
boolean
(Default:false
)If set to
true
, return additionally the complete previous revision of the changed documents under the attributeold
in the result. -
returnNew:
boolean
(Default:false
)If set to
true
, return additionally the complete new documents under the attributenew
in the result. -
ignoreRevs:
boolean
(Default:true
)By default, or if this is set to true, the
_rev
attributes in the given documents are ignored. If this is set to false, then any_rev
attribute given in a body document is taken as a precondition. The document is only updated if the current revision is the one specified. -
rev:
string
(optional)Only update the document if it matches this revision.
-
policy:
string
(optional)This option has no effect in ArangoDB 3.0 and later.
Determines the behavior when the revision is not matched:
- if policy is set to
"last"
, the document will be replaced regardless of the revision. - if policy is set to
"error"
or not set, the replacement will fail with an error.
- if policy is set to
-
If a string is passed instead of an options object, it will be interpreted as the rev option.
For more information on the opts object, see the HTTP API documentation for working with documents.
Examples
const db = new Database();
const collection = db.collection("some-collection");
const doc = { number: 1, hello: "world" };
const doc1 = await collection.save(doc);
const doc2 = await collection.update(doc1, { number: 2 });
assert.equal(doc2._id, doc1._id);
assert.notEqual(doc2._rev, doc1._rev);
const doc3 = await collection.document(doc2);
assert.equal(doc3._id, doc2._id);
assert.equal(doc3._rev, doc2._rev);
assert.equal(doc3.number, 2);
assert.equal(doc3.hello, doc.hello);
collection.bulkUpdate
async collection.bulkUpdate(documents, [opts]): Object
Updates (merges) the content of the documents with the given documents and returns an array containing the documents’ metadata.
This method is only available when targeting ArangoDB 3.0 or later, see Compatibility.
Arguments
-
documents:
Array<Object>
Documents to update. Each object must have either the
_id
or the_key
property. -
opts:
Object
(optional)If opts is set, it must be an object with any of the following properties:
-
waitForSync:
boolean
(Default:false
)Wait until document has been synced to disk.
-
keepNull:
boolean
(Default:true
)If set to
false
, properties with a value ofnull
indicate that a property should be deleted. -
mergeObjects:
boolean
(Default:true
)If set to
false
, object properties that already exist in the old document will be overwritten rather than merged. This does not affect arrays. -
returnOld:
boolean
(Default:false
)If set to
true
, return additionally the complete previous revision of the changed documents under the attributeold
in the result. -
returnNew:
boolean
(Default:false
)If set to
true
, return additionally the complete new documents under the attributenew
in the result. -
ignoreRevs:
boolean
(Default:true
)By default, or if this is set to true, the
_rev
attributes in the given documents are ignored. If this is set to false, then any_rev
attribute given in a body document is taken as a precondition. The document is only updated if the current revision is the one specified.
-
For more information on the opts object, see the HTTP API documentation for working with documents.
Examples
const db = new Database();
const collection = db.collection("some-collection");
const doc1 = { number: 1, hello: "world1" };
const info1 = await collection.save(doc1);
const doc2 = { number: 2, hello: "world2" };
const info2 = await collection.save(doc2);
const result = await collection.bulkUpdate(
[{ _key: info1._key, number: 3 }, { _key: info2._key, number: 4 }],
{ returnNew: true }
);
collection.remove
async collection.remove(documentHandle, [opts]): Object
Deletes the document with the given documentHandle from the collection.
Arguments
-
documentHandle:
string
The handle of the document to delete. This can be either the
_id
or the_key
of a document in the collection, or a document (i.e. an object with an_id
or_key
property). -
opts:
Object
(optional)If opts is set, it must be an object with any of the following properties:
-
waitForSync:
boolean
(Default:false
)Wait until document has been synced to disk.
-
rev:
string
(optional)Only update the document if it matches this revision.
-
policy:
string
(optional)This option has no effect in ArangoDB 3.0 and later.
Determines the behavior when the revision is not matched:
- if policy is set to
"last"
, the document will be replaced regardless of the revision. - if policy is set to
"error"
or not set, the replacement will fail with an error.
- if policy is set to
-
If a string is passed instead of an options object, it will be interpreted as the rev option.
For more information on the opts object, see the HTTP API documentation for working with documents.
Examples
const db = new Database();
const collection = db.collection("some-collection");
await collection.remove("some-doc");
// document 'some-collection/some-doc' no longer exists
// -- or --
await collection.remove("some-collection/some-doc");
// document 'some-collection/some-doc' no longer exists
collection.list
async collection.list([type]): Array<string>
Retrieves a list of references for all documents in the collection.
Arguments
-
type:
string
(Default:"id"
)The format of the document references:
- if type is set to
"id"
, each reference will be the_id
of the document. - if type is set to
"key"
, each reference will be the_key
of the document. - if type is set to
"path"
, each reference will be the URI path of the document.
- if type is set to