不确定标题是否解释了所有内容,但我正在使用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 *
但它似乎没有像我预期的那样工作。我得到了他指导和演出的所有电影,而我只想要那些他同时完成的电影。
答案 0 :(得分:1)
您已声明d
和m
,因此您不会再次在第二个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 *
我老实说,我不得不使用某种操作员来加入这两种,但我想我错了。