在没有WHERE的情况下查找属性不是特定值的节点

时间:2018-11-27 14:29:05

标签: neo4j cypher

节点的属性有6个类别。我想让所有具有此属性的节点不等于类别之一。

使用WHERE很容易,就像这样:

MATCH (a) 
WHERE a.property <> "category" 
RETURN a

我想在没有where的情况下采用另一种方法,因为它似乎更有效。我想像这样:

MATCH ( a {property <> "category"} ) 
RETURN a

有可能吗?

1 个答案:

答案 0 :(得分:3)

Neo4j MATCH没有内联WHERE NOT <property>=<value>的语法。此外,Cypher是声明性的,这意味着它仅定义要返回的内容,而不是如何返回它。因此,MATCH (n{id:1})MATCH (n) WHERE n.id=1等效(在执行中)。当您不将WHERE子句与MATCH配对时,WHERE与内联才会产生不同的执行计划。通过尝试“优化”您的密码来执行,大多数时候,您只会采用Cypher计划者的方式。 (除非您的原始密码过于复杂)