查找具有2个关系的节点

时间:2016-11-18 12:08:57

标签: neo4j cypher

不确定标题是否解释了所有内容,但我正在使用Neo4j和电影数据库(来自这里:https://neo4j.com/developer/example-data/)学习Cypher,我正在尝试制作一个查询,这将给我每部电影的导演也在其中行事。

举一个这样一部电影的例子,“低俗小说” - 昆汀·塔伦蒂诺都演出并导演了这部电影。

我想出了上面这个例子的查询:

match (m:Movie)-[:ACTS_IN]-(d:Director)-[:DIRECTED]->(n:Movie)
where d.name STARTS WITH 'Q'
return *

但它似乎没有像我预期的那样工作。我得到了他指导和演出的所有电影,而我只想要那些他同时完成的电影。

2 个答案:

答案 0 :(得分:1)

您已声明dm,因此您不会再次在第二个MATCH语句中指定标签。正确的查询看起来像这样

MATCH (d:Director)-[:DIRECTED]->(m:Movie) 
WHERE d.name STARTS WITH 'Q'     
MATCH (d)-[:ACTS_IN]->(m) 
RETURN d, collect(m) AS movies

请注意,根据您的初始问题,我也修改了return语句。

答案 1 :(得分:0)

哇,哇,我只是想通了:

match (d:Director)-[:DIRECTED]->(m:Movie)
match (d:Director)-[:ACTS_IN]->(m:Movie)
where d.name STARTS WITH 'Q' 
return *

我老实说,我不得不使用某种操作员来加入这两种,但我想我错了。