簡體   English   中英

ArangoDB:如何獲取2個頂點之間的所有可能路徑?

[英]ArangoDB : How to get all the possible paths between 2 vertices?

如何獲得maxDepth = 2的2個頂點之間的所有可能路徑(例如X和Y)?

我嘗試使用TRAVERSAL但是執行大約需要10秒鍾。 這是查詢:

FOR p IN TRAVERSAL(locations, connections, "X", "outbound", { minDepth: 1, maxDepth: 2, paths: true }) 
FILTER p.destination._key == "Y" 
RETURN p.path.vertices[*].name

位置(頂點)集合包含23753個文檔,而連接(邊)集合具有123414文檔。

如果通過選項filterVertices將目標過濾器直接放入Traversal中,則可以filterVertices加快查詢速度,以提供遍歷應觸及的頂點示例。 使用vertexFilterMethod可以定義與示例不匹配的所有頂點應該發生的情況。

因此,在您的查詢中,您只想匹配目標頂點“ Y”,並且所有其他頂點都應通過,但不包括在結果中( exclude

這使得后面的FILTER變得過時了。 現在,內部優化器無法自動執行此操作,但此魔術已在我們的路線圖上。

這是一個包含優化的查詢:

FOR p IN TRAVERSAL(locations, connections, "X", "outbound", { minDepth: 1, maxDepth: 2, paths: true, filterVertices: [{_key: "Y"}], vertexFilterMethod: ["exclude"]})
RETURN p.path.vertices[*].name

暫無
暫無

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

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