请澄清Neo4j在线课程中使用的查询

时间:2014-05-21 13:39:21

标签: neo4j

我正在http://www.neo4j.org/learn/online_course浏览在线课程。

在(Graph LAB) - (Paths)部分下,以下查询用于返回所有电影中的所有演员和导演。

MATCH (a)-[:ACTED_IN]->(m)<-[:DIRECTED]-(d)
RETURN a.name, m.title, d.name;

完全没问题。

到下一个问题&#34;您如何将此查询更改为仅返回在自己的电影中扮演的导演?&#34;

他们给出了改变(d)到(a)的解决方案。所以查询是,

MATCH (a)-[:ACTED_IN]->(m)<-[:DIRECTED]-(a)
RETURN a.name, m.title, a.name;

当我执行此查询时,它会输出&#34; Unforgiven,Clint Eastwood&#34;。

但我怀疑的是,当我查看交互式网络图,节点&#34; Clint Eastwood&#34;与#34;电影&#34;相关联节点只通过关系&#34; DIRECTED&#34;。没有单独的关系&#34; ACTED_IN&#34;。那么neo4j如何只选择&#34; Unforgiven,Clint Eastwood&#34;并抛弃其他董事。

请澄清一下。我的理解是错的。

r karthik。

2 个答案:

答案 0 :(得分:2)

是的,DIRECTED关系覆盖了ACTED_IN。删除ACTED_IN关系后,您可以看到DIRECTED关系:

MATCH (a)-[:ACTED_IN]->(m)<-[d:DIRECTED]-(a)
DELETE d;

我同意可视化应该以某种方式避免让像这样的叠加层发生。你应该引起neo4j人的注意。至少,他们可能想要更改教程以避免这种情况。

答案 1 :(得分:-1)

这对我有用:

MATCH (a)-[:ACTED_IN]->(m)<-[:DIRECTED]-(a) 
RETURN a.name, m.title;