[英]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.