簡體   English   中英

Neo4j:查詢以找到最多的 2 個節點

[英]Neo4j: query to find 2 node with the most

我試圖找出哪一對演員在我的數據庫中的大多數電影中一起表演過,但我的查詢一直返回空白,有什么建議嗎?

MATCH (actor1:Actor)<-[st1:ACTED_IN]-(mv1:Movie)-[st2:ACTED_IN]->(actor2:Actor) 
RETURN distinct actor1,actor2,count(mv1)

看起來你寫了相反方向的關系箭頭。

它可能是從演員到電影:

MATCH (actor1:Actor)-[st1:ACTED_IN]->(mv1:Movie)<-[st2:ACTED_IN]-(actor2:Actor) 
RETURN distinct actor1, actor2, count(mv1)

盡管您使用的是 distinct 您的查詢將返回重復項,因為以下兩個是不同的記錄:

actor1, actor2, movie_count  
actor2, actor1, movie_count

要擺脫這些重復條目,您可以使用比較節點 ID 的簡單技巧,例如:

MATCH (actor1:Actor)-[:ACTED_IN]->(mv1:Movie)<-[:ACTED_IN]-(actor2:Actor) 
WHERE id(actor1)>id(actor2)
RETURN actor1,actor2,count(mv1)

要查找在大多數電影中出演的演員:

MATCH (actor1:Actor)-[:ACTED_IN]->(mv1:Movie)<-[:ACTED_IN]-(actor2:Actor) 
WHERE id(actor1)>id(actor2)
RETURN actor1,actor2,count(mv1) AS movie_count 
ORDER BY movie_count DESC 
LIMIT 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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