Graphs
This chapter describes the general-graph module. It allows you to define a graph that is spread across several edge and document collections. This allows you to structure your models in line with your domain and group them logically in collections giving you the power to query them in the same graph queries. There is no need to include the referenced collections within the query, this module will handle it for you.
Three Steps to create a graph
- Create a graph
arangosh> var graph_module = require("@arangodb/general-graph");
arangosh> var graph = graph_module._create("myGraph");
arangosh> graph;
{[Graph]
}
- Add some vertex collections
arangosh> graph._addVertexCollection("shop");
arangosh> graph._addVertexCollection("customer");
arangosh> graph._addVertexCollection("pet");
arangosh> graph;
{[Graph]
"shop" : [ArangoCollection 18543, "shop" (type document, status loaded)],
"customer" : [ArangoCollection 18549, "customer" (type document, status loaded)],
"pet" : [ArangoCollection 18555, "pet" (type document, status loaded)]
}
hide execution results
arangosh> graph._addVertexCollection("shop");
arangosh> graph._addVertexCollection("customer");
arangosh> graph._addVertexCollection("pet");
arangosh> graph;
- Define relations on the Graph
arangosh> var rel = graph_module._relation("isCustomer", ["shop"], ["customer"]);
arangosh> graph._extendEdgeDefinitions(rel);
arangosh> graph;
{[Graph]
"isCustomer" : [ArangoCollection 18598, "isCustomer" (type edge, status loaded)],
"shop" : [ArangoCollection 18590, "shop" (type document, status loaded)],
"customer" : [ArangoCollection 18594, "customer" (type document, status loaded)],
"pet" : [ArangoCollection 18582, "pet" (type document, status loaded)]
}
hide execution results
arangosh> var rel = graph_module._relation("isCustomer", ["shop"], ["customer"]);
arangosh> graph._extendEdgeDefinitions(rel);
arangosh> graph;