【发布时间】:2019-02-05 16:30:23
【问题描述】:
我是 Neo4j 的新手,正在阅读他们的介绍教程,我对“WHERE NOT exists”子句的使用有点困惑。该教程显示了一个示例,他们希望返回所有写电影的人的 Person 节点,并排除导演该电影的人。他们对此的查询是:
MATCH (p:Person)-[:WROTE]->(m:Movie)
WHERE NOT exists( (p)-[:DIRECTED]->() )
RETURN p.name, m.title
返回:
p.name m.title
"Aaron Sorkin" "A Few Good Men"
"Jim Cash" "Top Gun"
"David Mitchell" "Cloud Atlas"
我的查询是:
MATCH (p:Person)-[:WROTE]->(m:Movie)
WHERE NOT exists( (p)-[:DIRECTED]->(m) )
RETURN p.name, m.title
返回:
p.name m.title
"Aaron Sorkin" "A Few Good Men"
"Jim Cash" "Top Gun"
"Nora Ephron" "When Harry Met Sally"
"David Mitchell" "Cloud Atlas"
"Lana Wachowski" "V for Vendetta"
"Lilly Wachowski" "V for Vendetta"
我检查了“Nora Ephron”、“Lana Wachowski”和“Lilly Wachowski”(不在他们的查询结果中)的图表关系,发现他们编写和制作了电影(但不是导演的)。根据我的理解,这两个查询都应该返回相同的结果。我想知道为什么他们会返回不同的结果。任何解释差异的帮助将不胜感激。
【问题讨论】:
标签: neo4j