11.1.2 Создание связей

11.1.2.1 Создание связи между двумя узлами

Чтобы создать связь между двумя узлами, мы сначала получаем эти два узла. Когда узлы загружены, мы просто создаём связь между ними.

Запрос

MATCH (a:Person),(b:Person)
WHERE a.name = 'Node A' AND b.name = 'Node B'
CREATE (a)-[r:RELTYPE]->(b)
RETURN r

возвращает созданную связь.

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

r
Relationships created: 1
:RELTYPE[1]{}

11.1.2.2 Создание связи и установка свойств

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

Запрос

MATCH (a:Person),(b:Person)
WHERE a.name = 'Node A' AND b.name = 'Node B'
CREATE (a)-[r:RELTYPE { name : a.name + '<->' + b.name }]->(b)
RETURN r

возвращает вновь созданную связь.

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

r
Relationships created: 1
Properties set: 1
:RELTYPE[1]{name:"Node A<->Node B"}

11.1.3 Создание полного пути

Когда вы используете CREATE и образец, будут созданы все части образца, которых еще нет к моменту выполнения запроса.

Запрос

CREATE p =(andres { name:'Andres' })-[:WORKS_AT]->(neo)<-[:WORKS_AT]-(michael { name:'Michael' })
RETURN p

создаёт три узла и две связи за одно действие, присваивает идентификатору пути и возвращает его.

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

p
Создано узлов: 3
Создано связей: 2
Установлено свойств: 2
[Node[3]{name:"Andres"},:WORKS_AT[2]{},Node[4]{},:WORKS_AT[3]{},Node[5]{name:"Michael"}]

11.1.4 Использование параметров с CREATE

11.1.4.1 Создание узла с параметром для свойств

Вы можете также создать объект графа из сопоставления. Все пары ключ/значение в сопоставлении будут установлены как свойства на созданном узле или связи. В этом случае мы добавляем узлу ещё и метку Person.

Параметры

{
  "props" : {
    "name" : "Andres",
    "position" : "Developer"
  }
}

Запрос

CREATE (n:Person { props })
RETURN n

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

n
Nodes created: 1
Properties set: 2
Labels added: 1
Node[1]{name:"Andres",position:"Developer"}

11.1.4.2. Создание нескольких узлов с параметром для их свойств

Предоставляя Cypher массив сопоставлений, позволяет создать узел для каждого сопоставления.

Замечание

Делая это, вы не можете создавать что-нибудь ещё в том же предложении CREATE.

Параметры

{
  "props" : [ {
    "name" : "Andres",
    "position" : "Developer"
  }, {
    "name" : "Michael",
    "position" : "Developer"
  } ]
}

Запрос

CREATE (n { props })
RETURN n

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

n
Nodes created: 2
Properties set: 4
Node[2]{name:"Andres",position:"Developer"}
Node[3]{name:"Michael",position:"Developer"}

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