我正在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。
答案 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;