如何在Neo4j中通过另一个节点递归获取间接关系?

如何在Neo4j中通过另一个节点递归获取间接关系?,neo4j,cypher,graph-databases,Neo4j,Cypher,Graph Databases,我有一个需求,需要递归遍历一个图,通过中间连接节点映射出连接 例如,考虑电影图表。如果两个人曾在一部电影中工作过,他们可以被视为认识对方。 通过这种间接关系,我想描绘出一个人不同层次的所有联系 MATCH (p1:Person {name:'Tom Hanks'})-->(m:Movie)<--(p2:Person) RETURN p1, p2, apoc.create.vRelationship(p1, 'KNOWS', {movie:m.title}, p2) 但从我的阅读和尝

我有一个需求,需要递归遍历一个图,通过中间连接节点映射出连接

例如,考虑电影图表。如果两个人曾在一部电影中工作过,他们可以被视为认识对方。 通过这种间接关系,我想描绘出一个人不同层次的所有联系

MATCH (p1:Person {name:'Tom Hanks'})-->(m:Movie)<--(p2:Person) RETURN p1, p2, apoc.create.vRelationship(p1, 'KNOWS', {movie:m.title}, p2)
但从我的阅读和尝试来看,我不能为虚拟关系这样做。
我能做些什么来实现这一点吗?

只需注意,就我所知,“虚拟”关系不涉及这一点,我想你的意思是说可变/未指定的关系

可以从Tom Hanks处返回任意长度的路径,只要删除关系类型,如果删除关系类型,则搜索是无向路径,在任何方向上都是这样。我不认为这是你想要的,如果不加限制,它将返回整个图形

match p=(p1:Person {name:'Tom Hanks'})-[*]-()
return p
LIMIT 10
注意:为了安全起见,我添加了限制10,这是一种良好的做法,至少在您确定查询符合您的要求之前是这样


您能给出一个您希望看到的查询结果的示例吗?您希望递归到什么程度(您可以指定深度,例如。*..2),并遍历每种关系类型?

只需注意,就我所知,“虚拟”关系不涉及到这一点,我想您的意思是说变量/未指定的关系

可以从Tom Hanks处返回任意长度的路径,只要删除关系类型,如果删除关系类型,则搜索是无向路径,在任何方向上都是这样。我不认为这是你想要的,如果不加限制,它将返回整个图形

match p=(p1:Person {name:'Tom Hanks'})-[*]-()
return p
LIMIT 10
注意:为了安全起见,我添加了限制10,这是一种良好的做法,至少在您确定查询符合您的要求之前是这样


您能给出一个您希望看到的查询结果的示例吗?您希望递归到什么程度(您可以指定深度,例如。*..2),以及通过每种关系类型?

通过虚拟关系我指的是apoc库中的vRelationship。我不能在这里删除关系类型,因为我必须对此进行进一步筛选。我想画一张汤姆·汉克斯认识的人的地图。为了了解它们的分离程度、连接路径等,我想进一步过滤电影类型,可能是按类型。例如,我可能想通过动作片过滤这些连接。我仍然会得到一张汤姆·汉克斯的关系地图,但这次,他们通过的电影将是动作片。通过虚拟关系,我指的是apoc图书馆中的关系。我不能在这里删除关系类型,因为我必须对此进行进一步筛选。我想画一张汤姆·汉克斯认识的人的地图。为了了解它们的分离程度、连接路径等,我想进一步过滤电影类型,可能是按类型。例如,我可能想通过动作片过滤这些连接。我仍然会得到一张汤姆·汉克斯的关系图,但这次,他们通过的电影将是动作片。