[英]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.