neo4j - AND 运算符不适用于 Neo4j 中的 type(r)

标签 neo4j cypher

在 Neo4j 附带的 Movie Graph 作为 Sample graph 中,我想查询:获取由导演 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) |b
a |DIRECTED|b
a |WROTE   |b

所以当你设置 or 时,你会得到两行。但是当你说而你实际上什么也得不到因为同时导演<>(导演和写作) 如果你的意思是 person 和 Movie 之间应该同时存在 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/

相关文章:

graph - Neo4j 时间相关图模型

Neo4j,密码 : Conditional Create

database - Cypher 访问空间分隔的关系属性 neo4j

java.lang.NoSuchMethodError : org. neo4j.ogm.session.SessionFactory.metaData()Lorg/neo4j/ogm/MetaData;

Neo4j : how to match nodes that have a common value in a property array

merge - 理解 Py2neo 上的合并问题

database - 如何获取neo4j中节点属性的最频繁值

neo4j - 从 Neo4j 中的现有设置添加唯一节点以及它们之间的关系

java - Neo4j HA(2.0-快照),等待集群选举master超时

shell - 格式化 Neo4J-Shell 密码查询结果?