如何在Neo4j中返回包含Tom Cruise的参演电影演员列表?
修改Cypher语句返回包含Tom Cruise的完整演员列表
要实现检索Tom Cruise参演电影的所有演员(包含他本人),并返回电影标题和对应演员列表,可以调整Cypher语句的匹配逻辑,直接定位目标电影的所有参演演员:
MATCH (tom:Person {name: 'Tom Cruise'})-[:ACTED_IN]->(m:Movie)<-[:ACTED_IN]-(actor:Person) RETURN m.title AS movie, collect(actor.name) AS actors
语句说明
- 首先匹配到
Tom Cruise对应的Person节点,并找到他参演的所有Movie节点 - 接着匹配这些电影的所有参演
Person节点(自然包含Tom Cruise本人) - 用
collect()聚合每个电影的所有演员名称为列表,字段名命名为actors
如果需要先筛选出Tom参演的电影,再匹配演员,也可以用这种写法:
MATCH (m:Movie) WHERE EXISTS((:Person {name: 'Tom Cruise'})-[:ACTED_IN]->(m)) MATCH (actor:Person)-[:ACTED_IN]->(m) RETURN m.title AS movie, collect(actor.name) AS actors
这两种写法都能满足需求,第一种更直观,第二种在需要更复杂的电影筛选条件时更灵活。
内容的提问来源于stack exchange,提问作者drdot
相关产品推荐
相关产品推荐

