[英]Join traversal object results in ArangoDB
我想用遍歷圖對此進行解釋。 我們在ANY
方向進行兩次遍歷,因此結果的數量要大一些。 我們從具有共同點的鄰居開始,這將成為聯接操作的結果。 一個查詢將查看A
和E
,這兩個查詢應共同具有B
,而其他查詢則沒有。
基本迭代:
FOR v IN 1..1 ANY 'circles/A' GRAPH 'traversalGraph' RETURN v._key
從circles/A
開始,這將導致["B","G"]
;從circles/E
開始,這將導致["F", "B"]
-因此,顯而易見,我們應該僅將"B"
作為結果加入。
我們第一種可能的方法是使用兩個子查詢,並使用INTERSECTION
它們:
LET firstTraversal = (FOR v IN 1..1 ANY 'circles/A' GRAPH 'traversalGraph' RETURN v)
LET secondTraversal = (FOR v IN 1..1 ANY 'circles/E' GRAPH 'traversalGraph' RETURN v)
RETURN INTERSECTION(firstTraversal, secondTraversal)
這里可能存在的問題是,將對對象進行完整的深度比較,這可能會變得昂貴。 因此,另一種方法是使用它們的_key
屬性將它們加入:
LET firstTraversal = (FOR v IN 1..1 ANY 'circles/A' GRAPH 'traversalGraph' RETURN v)
LET secondTraversal = (FOR v IN 1..1 ANY 'circles/E' GRAPH 'traversalGraph' RETURN v)
FOR oneSet IN firstTraversal
FOR otherSet IN secondTraversal
FILTER oneSet._key == otherSet._key RETURN oneSet
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.