在ArangoDB中交叉两次遍历

时间:2016-10-11 14:08:58

标签: arangodb

我正在尝试理解如何在ArangoDB中交叉两个结果,我的场景看起来像这样。

Example

我可以通过查询轻松找到居住在西班牙,岛屿或欧洲的用户:

FOR x IN 1..3 INBOUND "places/Europe" situedIn,livesIn 
FILTER IS_SAME_COLLECTION('users',x)
return x

我想了解的是扩展搜索功能的最佳方式,包括专业:

示例:

  • 返回西班牙的所有警察(返回[A])
  • 归还欧洲所有警察(返回[A])
  • 返回欧洲的所有法律(返回[A,B])

感谢任何帮助

2 个答案:

答案 0 :(得分:3)

经过一番搜索,答案是“交叉”

FOR a IN INTERSECTION (

(FOR x IN 1..3 INBOUND "places/Europe" situedIn
   FOR p IN INBOUND x livesIn
   return p),

(FOR x IN 1..3 INBOUND "profession/Medical" specializes
   FOR p IN INBOUND x worksWith
   return p)

) RETURN a

答案 1 :(得分:1)

_commonNeighbors功能可能是您正在寻找的功能。它返回两组顶点之间的交集。

https://docs.arangodb.com/3.0.10/Manual/Graphs/GeneralGraphs/Functions.html#commonneighbors