如何在Neo4j中找到两种节点的关系?

时间:2017-03-12 08:35:49

标签: neo4j

我在Neo4j db中存储了两种类型的节点:Person和Group。我定义了一种关系" IN"人与人之间:(p:Person)-[:IN]->(g:Group)

问题是给出2个Person节点,我怎样才能找到它们之间的关系?

我知道我可以使用Cypher查询,例如

MATCH (p1:Person{pid: '11231'})-[:IN]->(g:Group)<-[:IN]-(p2:Person{pid: '1231231'}) 
RETURN p1,p2,g; 

但是如何描述多跳关系以便Neo4j可以找到两个非直接链接的Person节点之间的链接?我不知道链接这两个Person节点需要多少跳。

1 个答案:

答案 0 :(得分:1)

您可以使用以下Cypher查询:

MATCH (p1:Person{pid: '11231'})-[:IN*]-(p2:Person{pid: '1231231'}) return p1,p2;

注意:关系IN中的*可以解决问题。

但是,这是一种效率低下的方法,你应该限制这样的跳数:

MATCH (p1:Person{pid: '11231'})-[:IN*1..5]-(p2:Person{pid: '1231231'}) return p1,p2;

更多关系匹配模式可以在cypher refcard模式部分找到

https://neo4j.com/docs/cypher-refcard/current/

相关问题