ArangoDB v3.12 is under development and not released yet.

This documentation is not final and potentially incomplete.

General 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.

New to ArangoDB? Take the free ArangoDB Graph Course for freshers.

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;
Show execution results
Hide execution results
{[GeneralGraph] 
}

Add some vertex collections

arangosh> graph._addVertexCollection("shop");
arangosh> graph._addVertexCollection("customer");
arangosh> graph._addVertexCollection("pet");
arangosh> graph = graph_module._graph("myGraph");
Show execution results
Hide execution results
{[GeneralGraph] 
  "customer" : [ArangoCollection 74708, "customer" (type document, status loaded)], 
  "pet" : [ArangoCollection 74717, "pet" (type document, status loaded)], 
  "shop" : [ArangoCollection 74699, "shop" (type document, status loaded)] 
}

Define relations on the Graph

arangosh> var rel = graph_module._relation("isCustomer", ["shop"], ["customer"]);
arangosh> graph._extendEdgeDefinitions(rel);
arangosh> graph = graph_module._graph("myGraph");
Show execution results
Hide execution results
{[GeneralGraph] 
  "isCustomer" : [ArangoCollection 74778, "isCustomer" (type edge, status loaded)], 
  "shop" : [ArangoCollection 74776, "shop" (type document, status loaded)], 
  "customer" : [ArangoCollection 74777, "customer" (type document, status loaded)], 
  "pet" : [ArangoCollection 74765, "pet" (type document, status loaded)] 
}