我搜索了整个arangodb项目网站,但没有找到解决方案.如果我像大洲/国家/首都一样遍历简单的树,我怎样才能获得当前项目的面包屑?希望有道理
我将从你的例子开始使用arangosh和Gremlin.JS.后来我将使用AQL,所有语言驱动程序都可用.
arangosh [_system]> var Graph = require("org/arangodb/graph").Graph;
首先是不同的地点(地区,城市):
arangosh [_system]> v1 = g.addVertex("Earth"); arangosh [_system]> v2 = g.addVertex("Europe"); arangosh [_system]> v3 = g.addVertex("Germany"); arangosh [_system]> v4 = g.addVertex("Berlin"); arangosh [_system]> v5 = g.addVertex("Spain"); arangosh [_system]> v6 = g.addVertex("Barcelona");
和他们的关系:
arangosh [_system]> g.addEdge(v1, v2); arangosh [_system]> g.addEdge(v2, v3); arangosh [_system]> g.addEdge(v3, v4); arangosh [_system]> g.addEdge(v2, v5); arangosh [_system]> g.addEdge(v5, v6);
所以图表现在是你的树:
arangosh [_system]> v1.outbound().getInVertex() [ Vertex("Europe") ] arangosh [_system]> v1.outbound().getInVertex().outbound().getInVertex() [ [ Vertex("Germany"), Vertex("Spain") ] ] arangosh [_system]> v1.outbound().getInVertex().outbound().getInVertex().outbound().getInVertex() [ [ [ Vertex("Berlin") ], [ Vertex("Barcelona") ] ] ]
为了从柏林那里得到面包屑,你可以计算从柏林到地球的路径:
arangosh [_system]> v4.pathTo(v1); [ [ "Berlin", "Germany", "Europe", "Earth" ] ]
使用AQL,您可以使用遍历从柏林遍历到根:
arangosh [_system]> db._query('FOR p in TRAVERSAL(locations, part, @start, "inbound", {}) RETURN p.vertex._key', { start: v4._id } ).toArray() [ "Berlin", "Germany", "Europe", "Earth" ]
我希望这个例子能让你知道如何创建面包屑.
干杯弗兰克