[英]In cypher, how do I return a list of connected nodes and their position in the string?
[英]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.