neo4j Cypher查询解释结果

时间:2014-07-22 19:37:09

标签: neo4j cypher

我试图在给定的neo4j测试数据集中找到“朋友的朋友”级推荐, 我已经提出了这两个查询,我无法识别第二个查询中的错误,因为它包含一个额外的节点 - '8'(Emil Eifrem)。 请帮我理解其中的区别。感谢

1)

MATCH (keanu:Person {name:"Keanu Reeves"})-[:ACTED_IN]->()<-[:ACTED_IN]-(f),
    (f)-[:ACTED_IN]->()<-[:ACTED_IN]-(fof) 
WHERE NOT (keanu)-[:ACTED_IN]->()<-[:ACTED_IN]-(fof) AND fof <> keanu 
RETURN fof;

VS

2)

MATCH (keanu:Person {name:"Keanu Reeves"})-[:ACTED_IN]->(movie)<-[:ACTED_IN]-(f),
    (f)-[:ACTED_IN]->(f_movies)<-[:ACTED_IN]-(fof) 
WHERE NOT (movie)<-[:ACTED_IN]-(fof) AND fof <> keanu
RETURN fof;

1 个答案:

答案 0 :(得分:1)

你在第二个WHERE子句中引用的电影是之前在MATCH子句中匹配的一部具体电影,所以你只能检查那部电影而不是fof和基努里夫斯之间的所有潜在电影。这就是为什么你过滤掉了更少的人。