也许我需要花更多时间学习Cypher文档,但需要使用以下密码查询:
MATCH (a)-[:friends|colleagues]-(b)
WHERE 'Boston' IN a.lived_in and 'Boston' IN b.lived_in
WITH a, count(b) as c
RETURN a.name, c
为什么b包含重复项?
答案 0 :(得分:2)
[:friends|colleagues]
表示“查找所有friend
和colleague
关系”。
因为节点a
可以是另一个节点b
的朋友和同事(反之亦然,因为您的查询是非定向的),查询可以为任何节点查找多个结果行给定节点对。
当您使用COUNT()
聚合a
时,默认情况下会在聚合中包含任何重复的b
个节点。
如果您只想计算b
的不同结果,可以使用DISTINCT
关键字,如下所示(我还通过删除不必要的WITH
子句简化了查询):< / p>
MATCH (a)-[:friends|colleagues]-(b)
WHERE 'Boston' IN a.lived_in AND 'Boston' IN b.lived_in
RETURN a.name, COUNT(DISTINCT b) AS c;