查询 ArangoDB general-graph 是否有超过 2 个起始顶点的公共邻居?
Query ArangoDB general-graph for common neighbors with more than 2 start vertices?
考虑以下示例图:
给定顶点A
、B
和C
(创建者),如何找出它们的共同邻居?
(projects all 3 participated in)
对于两个顶点,我可以简单地使用GRAPH_COMMON_NEIGHBORS("myGraph", A, B)
,但是如果我想查询3个或更多怎么办?
预期结果:1
和2
。
给定相同的顶点,如何使它return没有其他联系的共同邻居?
(创作者独家参与一个项目,不允许添加边) ?
预期结果:1
,因为 2 有一条边来自 D,它不是起始顶点之一。
您可以简单地传递相同的一组顶点作为公共邻居的两个参数。然后以更好的格式重新打包结果,以便 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])
考虑以下示例图:
给定顶点
A
、B
和C
(创建者),如何找出它们的共同邻居?
(projects all 3 participated in)
对于两个顶点,我可以简单地使用GRAPH_COMMON_NEIGHBORS("myGraph", A, B)
,但是如果我想查询3个或更多怎么办?
预期结果:1
和2
。给定相同的顶点,如何使它return没有其他联系的共同邻居?
(创作者独家参与一个项目,不允许添加边) ?
预期结果:1
,因为 2 有一条边来自 D,它不是起始顶点之一。
您可以简单地传递相同的一组顶点作为公共邻居的两个参数。然后以更好的格式重新打包结果,以便 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])