条款我已经建立这个数据库的Neo4j如何使用WHERE在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或其他。
条款我已经建立这个数据库的Neo4j如何使用WHERE在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或其他。
第一:发现基努演过电影列表
二: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)
查询使用相同的标识符,r
名单采取行动,在MATCH
和WHERE
条款。这意味着2 ACTS_IN
关系应该是相同的。因此,a
将始终是Keanu Reeves
的节点。
此表格应返回所有相关者(包括基努),但可能不会很高性能:
MATCH (a:Actor)-[r:ACTS_IN]->(m:Movie)
WHERE (m)<-[:ACTS_IN]-(:Actor { name:"Keanu Reeves" })
RETURN DISTINCT a.name;
这个查询应该更快(从结果消除基努),特别是如果您首先在:Actor(name)
上创建索引:
MATCH (a:Actor)-[:ACTS_IN]->(:Movie)<-[:ACTS_IN]-(:Actor { name:"Keanu Reeves" })
RETURN DISTINCT a.name;
非常感谢! – vivi11130704