"NOT" Neo4j 中 MATCH 的运算符

"NOT" operator for MATCH in Neo4j

在 Neo4j 2.x 中,使用 Cypher 2.0 很容易找到给定 属性 具有特定值的所有节点,如下所示:

MATCH (node {property: 'value'}) 
RETURN node;

但是,除了 "value" 之外,我如何找到具有任何 property 值的所有节点? 我尝试使用 NOT 运算符像这样,但这只是 returns 一个语法错误:

MATCH (node {property: NOT 'value'}) 
RETURN node;

MATCH 子句中属性的简洁语法仅适用于精确匹配。

如果你想做任何其他类型的匹配条件,你应该使用 WHERE 子句:

MATCH (node)
WHERE node.property <> 'value'
RETURN node;

另一个例子:

MATCH (node)
WHERE NOT node.property IN ["red", "blue", "yellow"]
RETURN node;

请注意,这将执行整个图形扫描,强烈建议不要这样做。在任何合理的数据集大小上,此查询可能无法完成或至少无法及时完成。