Запрос Cypher для создания нескольких узлов и связей

я пытаюсь написать запрос шифрования для создания нескольких узлов и отношений в одном запросе. Документация по использованию CREATE предложения в Cypher утверждают, что невозможно создать несколько узлов разных типов в единственном числе CREATE предложения.

он намекает, что я должен быть в состоянии разбить его на несколько CREATE ' s. Несколько похожих ответов, которые я прочитал, указывают на одно и то же решение. Я пытался сделать это и продолжаю получать ответ. ошибка.
Error: If you create multiple elements, you can only create one of each.

вот краткий обзор того, что я пытаюсь сделать.

  1. создать item узел.
  2. создать несколько representation узлы.
  3. создайте связь между созданным item узел и существующий stack узел.
  4. создать несколько отношений между созданными item узел и создал representation узлы.

это запрос, который я сейчас использую, который пытается сломать все отдельные части CREATE процесс на отдельные шаги.

START stack=node({stack})
CREATE (item {item}) 
CREATE (representations {representations})
CREATE (stack)-[:Item]->(item)
CREATE (item)-[:Representation]->(representations)
RETURN item, representations

я пробовал несколько вариантов вышеуказанного запроса, включая созданиеitem и representation узлы в начале запроса.

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

1 ответов


ваша представлений списка ? Тогда вы можете иметь это только как единственный оператор create.

Я предполагаю, что Neo4j 1.9 из вашего синтаксиса.

что вы можете сделать, это использовать FOREACH

START stack=node({stack})
CREATE (item {item}) 
CREATE (stack)-[:Item]->(item)
FOREACH (r in {representations} : 
   CREATE (representation {r}), (item)-[:Representation]->(representation)
)
MATCH (item)-[:Representation]->(representations)
RETURN item, representations