Edge document are like normal document with additional two attributes _from, _to.
Edge collection has ‘edges’ method which takes a vertex (or) vertices as input and return all edges starting from (outbound) or ending in (inbound) vertex (or) vertices.
Signature
edge-collection.edges(vertex)
edge-collection.edges(vertices)
Let’s experiment it with by building simple graph.
Step 1: Create two collections, one is of type document/vertex and other is of type edge.
db._createDocumentCollection("myVertexes")
db._createEdgeCollection("myEdges")
127.0.0.1:8529@abc_org> db._createDocumentCollection("myVertexes") [ArangoCollection 36584, "myVertexes" (type document, status loaded)] 127.0.0.1:8529@abc_org> db._createEdgeCollection("myEdges") [ArangoCollection 36601, "myEdges" (type edge, status loaded)]
Step 2: Create 5 vertex documents v1, v2, v3, v4 and v5.
var myGraph = {}; myGraph.v1 = db.myVertexes.save({ name : "vertex 1" }); myGraph.v2 = db.myVertexes.save({ name : "vertex 2" }); myGraph.v3 = db.myVertexes.save({ name : "vertex 3" }); myGraph.v4 = db.myVertexes.save({ name : "vertex 4" }); myGraph.v5 = db.myVertexes.save({ name : "vertex 5" }); 127.0.0.1:8529@abc_org> var myGraph = {}; 127.0.0.1:8529@abc_org> myGraph.v1 = db.myVertexes.save({ name : "vertex 1" }); { "_id" : "myVertexes/36641", "_key" : "36641", "_rev" : "_cS_C0bq---" }
127.0.0.1:8529@abc_org> myGraph.v2 = db.myVertexes.save({ name : "vertex 2" }); { "_id" : "myVertexes/36643", "_key" : "36643", "_rev" : "_cS_C0bq--A" } 127.0.0.1:8529@abc_org> myGraph.v3 = db.myVertexes.save({ name : "vertex 3" }); { "_id" : "myVertexes/36645", "_key" : "36645", "_rev" : "_cS_C0bu---" } 127.0.0.1:8529@abc_org> myGraph.v4 = db.myVertexes.save({ name : "vertex 4" }); { "_id" : "myVertexes/36647", "_key" : "36647", "_rev" : "_cS_C0by---" } 127.0.0.1:8529@abc_org> myGraph.v5 = db.myVertexes.save({ name : "vertex 5" }); { "_id" : "myVertexes/36649", "_key" : "36649", "_rev" : "_cS_C02u---" }
Step 3: Create edges between vertexes.
myGraph.e1 = db.myEdges.save(myGraph.v1, myGraph.v2,{ label : "linkTo"}); myGraph.e2 = db.myEdges.save(myGraph.v1, myGraph.v3,{ label : "linkTo"}); myGraph.e3 = db.myEdges.save(myGraph.v2, myGraph.v4,{ label : "linkTo"}); myGraph.e4 = db.myEdges.save(myGraph.v3, myGraph.v5,{ label : "linkTo"}); myGraph.e5 = db.myEdges.save(myGraph.v4, myGraph.v3,{ label : "linkTo"}); myGraph.e6 = db.myEdges.save(myGraph.v4, myGraph.v5,{ label : "linkTo"});
Get all the inbound and outbound edges of vertex v3
127.0.0.1:8529@abc_org> db.myEdges.edges(myGraph.v3) [ { "_key" : "36717", "_id" : "myEdges/36717", "_from" : "myVertexes/36645", "_to" : "myVertexes/36649", "_rev" : "_cS_EWBq---", "label" : "linkTo" }, { "_key" : "36713", "_id" : "myEdges/36713", "_from" : "myVertexes/36641", "_to" : "myVertexes/36645", "_rev" : "_cS_EWBi---", "label" : "linkTo" }, { "_key" : "36719", "_id" : "myEdges/36719", "_from" : "myVertexes/36647", "_to" : "myVertexes/36645", "_rev" : "_cS_EWBu---", "label" : "linkTo" } ]
Get all outbound edges of vertex v3
127.0.0.1:8529@abc_org> db.myEdges.outEdges(myGraph.v3) [ { "_key" : "36717", "_id" : "myEdges/36717", "_from" : "myVertexes/36645", "_to" : "myVertexes/36649", "_rev" : "_cS_EWBq---", "label" : "linkTo" } ]
Get all inbound edges of vertex v3
127.0.0.1:8529@abc_org> db.myEdges.inEdges(myGraph.v3) [ { "_key" : "36713", "_id" : "myEdges/36713", "_from" : "myVertexes/36641", "_to" : "myVertexes/36645", "_rev" : "_cS_EWBi---", "label" : "linkTo" }, { "_key" : "36719", "_id" : "myEdges/36719", "_from" : "myVertexes/36647", "_to" : "myVertexes/36645", "_rev" : "_cS_EWBu---", "label" : "linkTo" } ]
Previous Next Home
No comments:
Post a Comment