2015-03-20 2 views
3

В Neo4j 2.x, легко найти все узлы с определенным значением для данного свойства с использованием Cypher 2.0, например, так:«НЕ» оператор MATCH в Neo4j

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

Однако, как я бы нашел все узлы с любым значением для property, за исключением "value"? Я попытался с помощью оператора NOT, как это так, но это просто возвращает ошибку синтаксиса:

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

ответ

4

Конспективный синтаксис для свойств в пункте MATCH работает только с точным соответствием.

Если вы хотите сделать какой-либо другой вид условия соответствия, то следует оговорка WHERE:

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

Другой пример:

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

Пожалуйста, обратите внимание, это будет делать весь график сканирования, который настоятельно не рекомендуется. При любом разумном размере набора данных этот запрос может не завершиться или, по крайней мере, не своевременно.

+0

Спасибо! Мой набор данных достаточно мал (~ 50000 узлов), и моя цель состояла в том, чтобы получить количество узлов без определенного значения для свойства. Запрос выполняется в ~ 350 мс, поэтому он выглядит так, как Neo4j может обрабатывать запрос для моего размера БД :) –

Смежные вопросы