如何在Cypher/Neo4j中使用WHERE子句
我在Neo4j上建立了这个数据库 我在寻找基努·里维斯也出演过的电影中的演员。我的代码是:如何在Cypher/Neo4j中使用WHERE子句,neo4j,cypher,Neo4j,Cypher,我在Neo4j上建立了这个数据库 我在寻找基努·里维斯也出演过的电影中的演员。我的代码是: MATCH (a:Actor)-[r:ACTS_IN]->(m:Movie) WHERE (m:Movie)<-[r:ACTS_IN]-(:Actor { name:"Keanu Reeves" }) RETURN a.name 但它不起作用。我不熟悉这种语言,我甚至不确定是否应该使用WHERE、WITH或其他语言。首先:查找基努主演的电影列表 第二:通过基努和每一部电影,找到那些电影中不是
MATCH (a:Actor)-[r:ACTS_IN]->(m:Movie)
WHERE (m:Movie)<-[r:ACTS_IN]-(:Actor { name:"Keanu Reeves" })
RETURN a.name
但它不起作用。我不熟悉这种语言,我甚至不确定是否应该使用WHERE、WITH或其他语言。首先:查找基努主演的电影列表
第二:通过基努和每一部电影,找到那些电影中不是基努的其他演员
第三:返回基努在电影列表中与之合作的同事名单
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)
第一:找到基努出演的电影列表
第二:通过基努和每一部电影,找到那些电影中不是基努的其他演员
第三:返回基努在电影列表中与之合作的同事名单
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)
您的查询在MATCH和WHERE子句中使用相同的标识符r。这意味着关系中的两个动作应该是相同的。因此,a将始终是基努·里夫斯的节点 这种形式的查询应该返回包括基努在内的所有相关参与者,但可能不会非常有效:
MATCH (a:Actor)-[r:ACTS_IN]->(m:Movie)
WHERE (m)<-[:ACTS_IN]-(:Actor { name:"Keanu Reeves" })
RETURN DISTINCT a.name;
您的查询在MATCH和WHERE子句中使用相同的标识符r。这意味着关系中的两个动作应该是相同的。因此,a将始终是基努·里夫斯的节点 这种形式的查询应该返回包括基努在内的所有相关参与者,但可能不会非常有效:
MATCH (a:Actor)-[r:ACTS_IN]->(m:Movie)
WHERE (m)<-[:ACTS_IN]-(:Actor { name:"Keanu Reeves" })
RETURN DISTINCT a.name;