7.0 KiB
GraphEdgeCollection API
The GraphEdgeCollection API extends the Collection API with the following methods.
graphEdgeCollection.remove
async graphEdgeCollection.remove(documentHandle): Object
Deletes the edge with the given documentHandle from the collection.
Arguments
-
documentHandle:
string
The handle of the edge to retrieve. This can be either the
_id
or the_key
of an edge in the collection, or an edge (i.e. an object with an_id
or_key
property).
Examples
const graph = db.graph('some-graph');
const collection = graph.edgeCollection('edges');
await collection.remove('some-key')
// document 'edges/some-key' no longer exists
// -- or --
await collection.remove('edges/some-key')
// document 'edges/some-key' no longer exists
graphEdgeCollection.edge
async graphEdgeCollection.edge(documentHandle): Object
Retrieves the edge with the given documentHandle from the collection.
Arguments
-
documentHandle:
string
The handle of the edge to retrieve. This can be either the
_id
or the_key
of an edge in the collection, or an edge (i.e. an object with an_id
or_key
property).
Examples
const graph = db.graph('some-graph');
const collection = graph.edgeCollection('edges');
const edge = await collection.edge('some-key');
// the edge exists
assert.equal(edge._key, 'some-key');
assert.equal(edge._id, 'edges/some-key');
// -- or --
const edge = await collection.edge('edges/some-key');
// the edge exists
assert.equal(edge._key, 'some-key');
assert.equal(edge._id, 'edges/some-key');
graphEdgeCollection.save
async graphEdgeCollection.save(data, [fromId, toId]): Object
Creates a new edge between the vertices fromId and toId with the given data.
Arguments
-
data:
Object
The data of the new edge. If fromId and toId are not specified, the data needs to contain the properties _from and _to.
-
fromId:
string
(optional)The handle of the start vertex of this edge. This can be either the
_id
of a document in the database, the_key
of an edge in the collection, or a document (i.e. an object with an_id
or_key
property). -
toId:
string
(optional)The handle of the end vertex of this edge. This can be either the
_id
of a document in the database, the_key
of an edge in the collection, or a document (i.e. an object with an_id
or_key
property).
Examples
const db = new Database();
const graph = db.graph('some-graph');
const collection = graph.edgeCollection('edges');
const edge = await collection.save(
{some: 'data'},
'vertices/start-vertex',
'vertices/end-vertex'
);
assert.equal(edge._id, 'edges/' + edge._key);
assert.equal(edge.some, 'data');
assert.equal(edge._from, 'vertices/start-vertex');
assert.equal(edge._to, 'vertices/end-vertex');
graphEdgeCollection.edges
async graphEdgeCollection.edges(documentHandle): Array<Object>
Retrieves a list of all edges of the document with the given documentHandle.
Arguments
-
documentHandle:
string
The handle of the document to retrieve the edges of. This can be either the
_id
of a document in the database, the_key
of an edge in the collection, or a document (i.e. an object with an_id
or_key
property).
Examples
const db = new Database();
const graph = db.graph('some-graph');
const collection = graph.edgeCollection('edges');
await collection.import([
['_key', '_from', '_to'],
['x', 'vertices/a', 'vertices/b'],
['y', 'vertices/a', 'vertices/c'],
['z', 'vertices/d', 'vertices/a']
]);
const edges = await collection.edges('vertices/a');
assert.equal(edges.length, 3);
assert.deepEqual(edges.map(edge => edge._key), ['x', 'y', 'z']);
graphEdgeCollection.inEdges
async graphEdgeCollection.inEdges(documentHandle): Array<Object>
Retrieves a list of all incoming edges of the document with the given documentHandle.
Arguments
-
documentHandle:
string
The handle of the document to retrieve the edges of. This can be either the
_id
of a document in the database, the_key
of an edge in the collection, or a document (i.e. an object with an_id
or_key
property).
Examples
const db = new Database();
const graph = db.graph('some-graph');
const collection = graph.edgeCollection('edges');
await collection.import([
['_key', '_from', '_to'],
['x', 'vertices/a', 'vertices/b'],
['y', 'vertices/a', 'vertices/c'],
['z', 'vertices/d', 'vertices/a']
]);
const edges = await collection.inEdges('vertices/a');
assert.equal(edges.length, 1);
assert.equal(edges[0]._key, 'z');
graphEdgeCollection.outEdges
async graphEdgeCollection.outEdges(documentHandle): Array<Object>
Retrieves a list of all outgoing edges of the document with the given documentHandle.
Arguments
-
documentHandle:
string
The handle of the document to retrieve the edges of. This can be either the
_id
of a document in the database, the_key
of an edge in the collection, or a document (i.e. an object with an_id
or_key
property).
Examples
const db = new Database();
const graph = db.graph('some-graph');
const collection = graph.edgeCollection('edges');
await collection.import([
['_key', '_from', '_to'],
['x', 'vertices/a', 'vertices/b'],
['y', 'vertices/a', 'vertices/c'],
['z', 'vertices/d', 'vertices/a']
]);
const edges = await collection.outEdges('vertices/a');
assert.equal(edges.length, 2);
assert.deepEqual(edges.map(edge => edge._key), ['x', 'y']);
graphEdgeCollection.traversal
async graphEdgeCollection.traversal(startVertex, opts): Object
Performs a traversal starting from the given startVertex and following edges contained in this edge collection.
Arguments
-
startVertex:
string
The handle of the start vertex. This can be either the
_id
of a document in the database, the_key
of an edge in the collection, or a document (i.e. an object with an_id
or_key
property). -
opts:
Object
See the HTTP API documentation for details on the additional arguments.
Please note that while opts.filter, opts.visitor, opts.init, opts.expander and opts.sort should be strings evaluating to well-formed JavaScript code, it's not possible to pass in JavaScript functions directly because the code needs to be evaluated on the server and will be transmitted in plain text.
Examples
const db = new Database();
const graph = db.graph('some-graph');
const collection = graph.edgeCollection('edges');
await collection.import([
['_key', '_from', '_to'],
['x', 'vertices/a', 'vertices/b'],
['y', 'vertices/b', 'vertices/c'],
['z', 'vertices/c', 'vertices/d']
]);
const result = await collection.traversal('vertices/a', {
direction: 'outbound',
visitor: 'result.vertices.push(vertex._key);',
init: 'result.vertices = [];'
});
assert.deepEqual(result.vertices, ['a', 'b', 'c', 'd']);