在作为示例图的 Neo4j 附带的电影图中,我想查询:获取由导演 The Matrix 电影的同一个人导演和编写的电影。这是我正在使用的查询Match(m:Movie{title:'The Matrix'})<-[r:DIRECTED]-(p:Person)-[r2]->(n:Movie)where type(r2)='DIRECTED' and type(r2)='WROTE'return p,n此查询不起作用,但如果我将放置 OR 子句而不是 AND 子句。它会起作用。使用 OR 子句为我提供由导演 The Matrix 电影的同一导演编写或导演的电影列表。请让我知道为什么 AND 子句不适用于 type(r)。 最佳答案 如果您在人物和电影之间同时具有 DIRECTED 和 WROTE 关系,您将有两条结果线,而不是一条。喜欢a |type(r) |ba |DIRECTED|ba |WROTE |b所以当你设置 or 时,你会得到两行。但是当你说和你实际上一无所获时,因为 Directed (Directed and Wrote) 同时发生如果您的意思是人与电影之间应该同时存在 DIRECTED 和 WROTE 关系,则查询应该类似于Match (m:Movie{title:'The Matrix'})<-[r:DIRECTED]-(p:Person)-[r2:DIRECTED]->(n:Movie), (p)-[r3:WROTE]->(n)return p,n关于neo4j - AND 运算符不适用于 Neo4j 中的 type(r),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36641411/ 10-12 17:26