Neo4j查询指定导演执导电影时出现语法错误求助
Neo4j查询指定导演执导电影时出现语法错误求助
嗨,我看到你作为Neo4j新手遇到了查询语法错误,别担心,咱们一步步来解决这个问题~
首先,先看你报错的查询语句:
match (n:Yonetmen) where n.title="Stephen King" match n-[:WRITE]->Movie return Movie
这里有两个关键问题导致了语法错误和逻辑问题:
1. 关系类型不匹配
你在导入数据的时候,建立的电影到导演的关系是:Yönetmen(对应语句MERGE (n)-[:Yönetmen]->(yntmn)),但查询时却用了:WRITE关系,这和你数据库里实际存在的关系不对应,Neo4j找不到这个关系。
2. Cypher语法不符合规范
Cypher要求所有节点必须用括号()包裹,哪怕是之前已经匹配过的节点。另外,Movie作为节点需要加上标签:Movie,并且最好给它一个变量名(比如movie),这样返回结果时更清晰。
正确的查询语句
根据你的数据结构,正确的查询应该是这样的:
MATCH (director:Yonetmen {title: "Stephen King"}) MATCH (movie:Movie)-[:Yönetmen]->(director) RETURN movie
如果想返回电影的具体属性(比如标题、IMDb评分等),可以调整返回语句让结果更直观:
MATCH (director:Yonetmen {title: "Stephen King"}) MATCH (movie:Movie)-[:Yönetmen]->(director) RETURN movie.title AS 电影标题, movie.IMDb AS IMDb评分, movie.released AS 上映日期
额外小提示
如果Stephen King在你的数据里不是导演,而是编剧或者其他角色,你需要对应调整关系类型(比如检查导入语句里的关系定义),但根据你的需求“列出同一导演执导的电影”,上面的语句应该能解决你的问题啦~
备注:内容来源于stack exchange,提问作者gizem tangalay
相关产品推荐
相关产品推荐

