在 ArangoDB 中使两个遍历相交

问题描述 投票:0回答:2

我试图了解如何在 ArangoDB 中相交两个结果,我的场景如下所示。

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

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

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

示例:

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

感谢您的帮助

arangodb
2个回答
3
投票

经过更多搜索后,答案是 INTERSECTION

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
投票

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

https://docs.arangodb.com/3.11/graphs/general-graphs/functions/#_commonneighbors

© www.soinside.com 2019 - 2024. All rights reserved.