簡體   English   中英

如何找到與 >1 路徑連接的節點並返回它們的連接節點?

[英]How do I find nodes that are connected with >1 path and return their connecting nodes?

我從 Neo4j 和 cypher 開始,並嘗試使用默認的電影 Graph。

我想找到與湯姆漢克斯合作過不止一部電影的所有演員,並列出他們合作過的電影。

尋找演員和電影作品數量

MATCH p=(a {name:"Tom Hanks"})-[r*2]-(b)
WITH count(p) AS commonMovies, a, b
WHERE commonMovies > 1
RETURN DISTINCT commonMovies, b.name
Order By commonMovies DESC;

輸出:

3 | 梅格瑞恩

2 | 加里·西尼斯

等等。

查找他們合作的電影適用於所有與湯姆·漢克斯合作過的演員:

MATCH p=(a {name:"Tom Hanks"})-[r*2]-(b)
RETURN b.name, extract(n in nodes(p)[1..-1] | n.title);

輸出:

湯姆漢克斯 | 你做的那件事

麗芙泰勒 | 你做的那件事

查理茲·塞隆 | 你做的那件事

諾拉·埃弗隆 | 鄒有郵件

我想要的是這樣的:

演員 | 【一系列電影】

我認為問題是我用 count(p) 聚合,但之后我無法從每條路徑中提取節點。 至少這對我來說似乎是問題所在。

謝謝!

您當前的查詢可能會返回您湯姆漢克斯本人,這個人可以完成這項工作:

MATCH (n:Person {name:'Tom Hanks'})-->(m:Movie)<--(other)
WITH other.name as coActor, collect(m.title) as movies
WHERE size(movies) > 1
RETURN coActor, movies

暫無
暫無

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

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