【发布时间】:2018-12-06 14:13:47
【问题描述】:
我想查找所有参与所有指定电影的人,例如 2 部电影:“终结者”、“真实的谎言”
我有以下疑问:
MATCH (t:Title)-[:ACTS_IN]-(p:Principal)-[:ACTS_BY]->(n:Name)
WHERE t.originalTitle IN ["The Terminator", "True Lies"]
WITH n, collect(n) as names
WHERE SIZE(names) >= 2
RETURN n.primaryName
如果每个人在每部电影中只参与一次(:ACTS_BY 关系),效果很好。但是根据我的数据库架构设计,每个人在 Principal 和 Name 节点之间可以有 0-N :ACTS_BY 关系(例如同一个人可以同时是电影的制片人和演员)。
问题是,如果该人在一部电影中参与了 2 次以上,另一部电影参与了 0 次,则提到的 Cypher 查询还将返回该人(Name 节点),但我只需要返回 Name 节点案例该人参加了每部电影。
请帮助改进查询以实现它。
【问题讨论】: