" NOT" Neo4j中MATCH的运算符

时间:2015-03-20 16:41:02

标签: neo4j cypher

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

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

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

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

1 个答案:

答案 0 :(得分:5)

MATCH子句中属性的简明语法仅适用于完全匹配。

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

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

另一个例子:

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

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