[英]Neighbours, duplicates and aggregation with Cypher & Neo4j
也許我需要花更多時間在 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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.