[英]How to use WHERE Clause in Cypher/Neo4j
您的查询在MATCH
和WHERE
子句中使用相同的标识符r
。 这意味着2个ACTS_IN
关系应该是相同的。 因此, a
永远是Keanu Reeves
的节点。
这种查询形式应返回所有相关的参与者(包括Keanu),但性能可能不高:
MATCH (a:Actor)-[r:ACTS_IN]->(m:Movie)
WHERE (m)<-[:ACTS_IN]-(:Actor { name:"Keanu Reeves" })
RETURN DISTINCT a.name;
此查询应该更快(并从结果中消除Keanu),尤其是如果您首先在:Actor(name)
上创建索引:
MATCH (a:Actor)-[:ACTS_IN]->(:Movie)<-[:ACTS_IN]-(:Actor { name:"Keanu Reeves" })
RETURN DISTINCT a.name;
首先:找到基努扮演的电影清单。
第二: WITH
基努(Keanu)合作,每部电影都会在那些不是基努的电影中找到其他演员。
第三:返回基努的同事的不同名单,他在电影名单中与他一起工作
match (k:Actor {name: 'Keanu Reeves'})-[r:ACTS_IN]->(m:Movie)
with k,m
match (m)<-[:ACTS_IN]-(colleague:Actor)
where colleague <> k
return distinct(colleague)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.