簡體   English   中英

Arango db在遍歷圖時生成面包屑

[英]Arango db generate breadcrumbs while traversing graph

我搜索了整個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"
]

我希望這個例子能讓你知道如何創建面包屑。

干杯弗蘭克

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM