查询具有2个以上起始顶点的常见邻居的ArangoDB通用图?

时间:2015-01-14 09:22:12

标签: graph graph-algorithm arangodb

考虑以下示例图:

Graph visualization

  1. 鉴于顶点ABC(创作者),如何找出他们的共同邻居?(所有3个参与的项目)< br />
    对于两个顶点,我可以简单地使用GRAPH_COMMON_NEIGHBORS("myGraph", A, B),但如果我想查询3个或更多,该怎么办?

    预期结果:12

  2. 给定相同的顶点,如何让它返回没有其他连接的公共邻居?(创建者专门参与项目,不允许附加边缘)?

    预期结果:1,因为2的边缘来自D,它不是起始顶点之一。

1 个答案:

答案 0 :(得分:2)

您可以简单地将同一组顶点作为常用邻居的两个参数传递。然后以更好的AQL格式重新打包结果以计算交集:

let res = (
  let nodes =  ["a/A","a/B","a/C"]
  for n in GRAPH_COMMON_NEIGHBORS("g",nodes , nodes) 
    for f in VALUES(n)
      return VALUES(f)
)
return CALL("intersection", res[0])