簡體   English   中英

使用 Cypher 和 Neo4j 進行鄰居、重復和聚合

[英]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]意思是“查找所有friendcolleague關系”。

因為節點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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM