11.2 Create Unique

  1. 11.2.1 Создание уникальных узлов
  2. 11.2.2 Создание уникальных связей
  3. 11.2.3 Описание сложного образца

CREATE UNIQUE находится в середине MATCH и CREATE  — будет сопоставлять то, что может, и создавать то, что отсутствует. CREATE UNIQUE будет всегда делать минимально возможные изменения в графе —  если возможно использовать части существующего графа, они будут использованы.

Другим отличием от MATCH является то, что CREATE UNIQUE предполагает образец уникальным. Если находятся множественные совпадения подграфов, возникает ошибка.

Совет

В предложении CREATE UNIQUE так же существенно используются образцы. Прочитайте Раздел 8.5 “Образцы” для введения.

Примеры исходят из следующего набора данных:

11.2.1 Создание уникальных узлов

11.2.1.1 Создание отсутствующего узла

Если образец описывал необходимость в узле, и он не был сопоставлен, будет создан новый узел.

Запрос

MATCH (root { name: 'root' })
CREATE UNIQUE (root)-[:LOVES]-(someone)
RETURN someone

Корневой узел не имеет связей LOVES, поэтому узел создается, как и связь с этим узлом.

Таблица 11.11 Результат

someone
Nodes created: 1
Relationships created: 1
Node[5]{}

11.2.1.2 Создание узлов с значениями

Описанный образец может также содержать значения на узле. В этом случае используется следующий синтаксис: prop : .

Запрос

MATCH (root { name: 'root' })
CREATE UNIQUE (root)-[:X]-(leaf { name:'D' })
RETURN leaf

Узла с именем D, который связан с корневым узлом, не существует, поэтому для соответствия с образцом создается новый узел.

Таблица 11.12 Результат

leaf
Nodes created: 1
Relationships created: 1
Properties set: 1
Node[5]{name:"D"}

11.2.1.3 Создание отсутствующего узла с меткой

Если описанный образец требует узла с меткой, и такого узла с данной меткой не существует, Cypher создаст новый узел.

Запрос

MATCH (a { name: 'A' })
CREATE UNIQUE (a)-[:KNOWS]-(c:blue)
RETURN c

Узел A связан с узлом C связью KNOWS, но поскольку узел C не имеет метки :blue, создается новый узел с меткой :blue, наряду с созданием связи KNOWS от A к этому узлу.

Таблица 11.13 Результат

C
Создано узлов: 1
Создано связей: 1
Добавлено меток: 1
Node[5]{}

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