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}

Предыдущая | Следующая