10.3.4 Коллекции
10.3.4.1 Оператор IN
Для проверки нахождения элемента в коллекции вы можете использовать оператор IN.
Запрос
MATCH (a) WHERE a.name IN ["Peter", "Tobias"] RETURN a
показывает как проверить, существует ли свойство в коллекции литералов.
Таблица 10.34 Результат
a |
---|
Node[0]{name:"Tobias",age:25} |
Node[1]{name:"Peter",age:34} |
10.3.5. Отсутствующие свойства и значения
10.3.5.1 Считать отсутствующее свойство по умолчанию false (ложь)
Т.к. отсутствующие свойства оцениваются как NULL, сравнение в примере даст FALSE для узлов, не имеющих свойства belt.
Запрос
MATCH (n) WHERE n.belt = 'white' RETURN n
вернет только те узлы, которые имеют свойство belt.
Таблица 10.35 Результат
n |
---|
Node[2]{name:"Andres",age:36,belt:"white"} |
10.3.5.2 Считать отсутствующее свойство по умолчанию true (истина)
Если вы хотите сравнить свойство на элементе графа, но только если оно существует, вы можете сравнить это свойство как с значением, которое вы ищете, так и с NULL, например:
Запрос
MATCH (n) WHERE n.belt = 'white' OR n.belt IS NULL RETURN n ORDER BY n.name
возвращает все узлы, даже те, которые не имеют свойства belt.
Таблица 10.36 Результат
n |
---|
Node[2]{name:"Andres",age:36,belt:"white"} |
Node[1]{name:"Peter",age:34} |
Node[0]{name:"Tobias",age:25} |
10.3.5.3 Фильтр по NULL
Иногда может потребоваться выяснить, является ли свойство или идентификатор NULL-значением. Это делается в стиле SQL с помощью IS NULL. И, так же, как и в SQL, отрицанием является IS NOT NULL, хотя NOT(IS NULL x) также работает.
Запрос
MATCH (person) WHERE person.name = 'Peter' AND person.belt IS NULL RETURN person
возвращает узлы, которые не имеют связи с Tobias.
Таблица 10.37 Результат
person |
---|
Node[1]{name:"Peter",age:34} |