查找两个节点之间共享的连接节点

时间:2017-02-24 14:27:03

标签: neo4j cypher

Cypher初学者问题。我知道如何得到一个名叫Rebecca的人的所有朋友,以及他们之间的边缘:

MATCH (rebecca:Person)-[r*1..10]->(friends:Friend)
RETURN rebecca, friends,
       extract(x IN r | {rel: x, start: startNode(x), end: endNode(x)})

而且我知道如何得到一个名叫罗伯特的人的所有朋友,以及他们之间的边缘:

MATCH (robert:Person)-[r*1..10]->(friends:Friend)
RETURN robert, friends,
       extract(x IN r | {rel: x, start: startNode(x), end: endNode(x)})

但是我怎样才能让罗伯特和丽贝卡的所有朋友相互拥有?通过组合这两个查询,或者如果有一个更简单的方法。

1 个答案:

答案 0 :(得分:3)

你可以使用

MATCH (rebecca:Person)-[:FRIEND]->(friends:Friend)<-[:FRIEND]-(robert:Person) 
where rebecca.name = "Rebecca" and robert.name= "Robert"    
RETURN friends