在Neo4j中找到2个常见朋友的朋友

时间:2016-04-19 03:16:45

标签: neo4j cypher

鉴于这种关系:

(P1:PERSON) - [:朋友] - GT;(P2:人)

有没有办法找到一对人,例如。 (p1,p2)谁有2个或更多的朋友?

1 个答案:

答案 0 :(得分:2)

这应该这样做:

MATCH (p1:PERSON)-[:FRIEND]-(friend:PERSON)-[:FRIEND]-(p2:PERSON)
WITH p1, p2, count(friend) AS friend_count
WHERE friend_count >= 2
RETURN p1, p2, friend_count

但请记住,这将是您的PERSON节点的cartesean产品,因此随着集合的增长,查询将不得不查看每对人的每个组合。只要你不关心运行这个查询/快速运行它就没问题。

另请注意,标签的常见样式为UpperCamelCase。看到这个是一个非常好的风格指南:

http://nigelsmall.com/zen