可选匹配和Cypher中的位置

时间:2017-06-16 13:47:57

标签: neo4j cypher graph-databases

我很难写一个密码查询。

图形

下面的图片显示了完整的图表。有些电影没有替身演员(图表是虚构的)。

问题

我想要一个从未和电影艺术家一起演过电影的所有演员(以及他们的电影)。在这种情况下,它将是“Johnny Depp”

Complete cypher graph

2 个答案:

答案 0 :(得分:4)

这应该有效:

MATCH (n:Actor)-->(m:Movie)
WHERE NOT (n)-->()<--(:Stuntman)
RETURN n AS actor, collect(m) AS movies

干杯

PS:还有另一个解决方案,但我认为性能较差:

MATCH (n:Actor)-->(m:Movie)
WITH n AS actor, collect(m) AS movies
WHERE all(m IN movies WHERE not (m)<--(:Stuntman))
RETURN actor, movies

答案 1 :(得分:2)

我认为这会让你前进

// Find the actors and their movies
MATCH (a:Actor)--(m:Movie)

// where the actor was never in a movie with a stuntman
WHERE NOT (a)-[:ACTS_IN]-(:Movie)-[:ACTS_IN]-(:Stuntman)
RETURN a,m