Neo4j Movie库Cypher查询编写:获取指定电影导演1995年参演作品
正确Cypher语句修改方案
原语句存在的问题
- 匹配逻辑错误:没有先正确关联《That Thing You Do》的导演节点,关系方向、关联逻辑完全不符合图谱Schema
- 匹配条件错误:电影标题大小写拼写和库内数据不一致,无法匹配到目标电影
- 属性获取逻辑错误:出演角色
role是ACTED_IN关系的属性,不是Person节点的属性 - 过滤逻辑错误:
date(m.released = 1995)是无效用法,库内Movie的released属性本身就是整型年份,不需要转date,且过滤的应该是导演出演的其他电影的年份,不是原电影的年份
修改后的正确语句
// 第一步:匹配《That Thing You Do》的导演节点 MATCH (director:Person)-[:DIRECTED]->(:Movie {title: 'That Thing You Do'}) // 第二步:匹配该导演作为演员出演的、1995年上映的电影,同时拿到出演关系里的角色 MATCH (director)-[actRel:ACTED_IN]->(targetMovie:Movie {released: 1995}) // 返回要求的字段 RETURN targetMovie.title AS Movie, actRel.role AS Roles
简化合并写法
MATCH (:Movie {title: 'That Thing You Do'})<-[:DIRECTED]-(p:Person)-[act:ACTED_IN]->(m:Movie {released:1995}) RETURN m.title AS Movie, act.role AS Roles
内容的提问来源于stack exchange,提问作者tryingToLearnSomething
相关产品推荐
相关产品推荐

