我在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节点需要多少跳。
答案 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模式部分找到