也许我需要花更多的时间与Cypher文档,但与以下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包含重复项?
[:friends|colleagues]
表示"查找所有friend
和colleague
关系"。
因为节点a
可以是另一个节点b
的朋友和同事(反之亦然,因为您的查询是非定向的),因此查询可以为任何给定的节点对找到多个结果行。
当您在a
上聚合(使用COUNT()
)时,默认情况下任何重复的b
节点都包含在聚合中。
如果您只想计算b
的不同结果,您可以使用DISTINCT
关键字如下(我还通过删除不必要的WITH
子句简化了查询):
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;