2015-08-27 53 views
-1

我开始使用Neo4j和密码,并尝试使用默认的电影图形进行游戏。如何查找与> 1路径连接并返回其连接节点的节点?

我想找到所有与汤姆汉克斯在多部电影中合作的演员,并列出他们一起工作的电影。

寻找电影的演员和工程量

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); 

输出:

汤姆·汉克斯|你做的那件事

Liv Tyler |你做的那件事

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

Nora Ephron | Zou've收到一封电子邮件

我想拥有的是一样的东西:

演员| [电影阵列]

我认为问题是我与count(p)聚合,但事后我无法从每个路径中提取节点。至少这对我来说似乎是个问题。

谢谢!

回答

1

您当前的查询可能会返回汤姆·汉克斯本人,这一次做的工作:

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