与OR条件匹配

cec*_*ode 5 neo4j cypher

现在和cypher一起玩了一段时间并且在理解某些东西时遇到了一些困难.

假设我有一些人节点,其中一些可能有belongs_to关系,那么找到一个节点也是最好的方法

  • 没有有blongs_to关系,但确实有"x@x.xom"的电子邮件地址
  • 要么
  • 确实有一个属性关系,Id属性为"100"(该属性属于关系)

我已经设法创建一些返回预期数据的查询,但我不知道这些是否是我的密码长期理解中"正确"的那些

任何帮助,将不胜感激.(特别是关于And | Or,订单和效率)

Mic*_*ger 5

像这样吗

您可以将路径模式用作谓词,请参阅:http : //neo4j.com/docs/2.1.5/query-where.html#query-where-patterns

MATCH (n:Person {email:"x@x.com"})
WHERE NOT (n)-[:BELONGS_TO]->() OR (n)-[:BELONGS_TO {id:100})->()
RETURN n
Run Code Online (Sandbox Code Playgroud)

  • 我需要非常类似的查询,但我也必须对边缘属性进行一些过滤。我需要一些像`MATCH (n:Person)-[r1:BELONGS_TO]->() OR (n)-[r2:HEY_TO]->() WHERE r1.date < 1 and r2.date > 10 RETURN n '我怎么能这么做呢?我想我找到了“[r1:BELONGS_TO|HEY_TO]” (2认同)