[英]ArangoDB: Traversals where edges are connected to other edges
我最近讀到ArangoDB能夠將邊連接到圖中的其他邊。 在這種情況下,如何查詢路徑工作? 例如:
car <-------- part
^
|
|
installationEvidence
在這種情況下, installationEvidence
是連接到汽車零件之間邊緣的節點。 從汽車節點開始,返回installationEvidence
的AQL是什么但不是part
? 都installationEvidence
和part
在所考慮的p.vertices[1]
層?
在ArangoDB中,邊緣是一種特殊類型的文檔。 這就是為什么你可以存儲指向其他邊緣的邊緣。 從查詢的角度來看,這條邊有兩個方向:A)遍歷通向target edge
。 在這種情況下,假設它是一般類型的文檔,並且遍歷將不遵循target edge
任何方向。 這意味着您必須在語句中編寫2個遍歷步驟。 邊緣的第一個結尾。 第二個從邊緣的_from
或_to
開始。 在您的情況下,查詢可能如下所示:
FOR edge IN 1 OUTBOUND @installationEvidece @@edges1
LET car = DOCUMENT(edge._to)
RETURN car
B)遍歷穿過邊緣,該邊緣具有指向它的其他邊緣。 這種情況比較復雜。 在ArangoDB的架構中,“頂點”對它的附着邊緣一無所知,邊緣知道它們的頂點。 在這種情況下你可以做的是再次寫兩個遍歷語句,其中第二個以遇到的邊開始,例如:
FOR part,edge IN 1 INBOUND @car @@edges1
FOR installationEvidence IN 1 INBOUND edge @@edges2
[...]
目前我們沒有遇到客戶的任何使用案例,使上述遍歷更加透明。 如果這對您至關重要,請與我們聯系,我們可以提高優先級,使這些查詢更容易制定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.