我正在尝试编写Cypher查询以在一个查询中创建多个节点和关系。有关在Cypher中使用CREATE
子句的文档说明,不可能在单个CREATE
子句中创建不同类型的多个节点。
然而,它暗示我应该能够将其分解为多个CREATE
。我读过的几个类似的答案也指向了相同的解决方案。我已经尝试过这样做并继续得到响应错误。
Error: If you create multiple elements, you can only create one of each.
以下是我正在尝试做的简要概述。
item
节点。representation
节点。item
节点与现有stack
节点之间创建关系。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
个节点。
我真的很感激任何建议。如果可以避免的话,我真的不想诉诸于多个数据库调用。
答案 0 :(得分:4)
您的陈述是否为清单?然后你只能将它作为单个创建语句。
我从你的语法中假设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