节点的属性有6个类别。我想让所有具有此属性的节点不等于类别之一。
使用WHERE
很容易,就像这样:
MATCH (a)
WHERE a.property <> "category"
RETURN a
我想在没有where
的情况下采用另一种方法,因为它似乎更有效。我想像这样:
MATCH ( a {property <> "category"} )
RETURN a
有可能吗?
答案 0 :(得分:3)
Neo4j MATCH没有内联WHERE NOT <property>=<value>
的语法。此外,Cypher是声明性的,这意味着它仅定义要返回的内容,而不是如何返回它。因此,MATCH (n{id:1})
与MATCH (n) WHERE n.id=1
等效(在执行中)。当您不将WHERE子句与MATCH配对时,WHERE与内联才会产生不同的执行计划。通过尝试“优化”您的密码来执行,大多数时候,您只会采用Cypher计划者的方式。 (除非您的原始密码过于复杂)