我正在使用查询
FOREACH(item IN $list | CREATE (p:Person) SET p.name = item.indexPropertyValue)
其中$list
是地图列表。我真正想要的是像
FOREACH(item IN $list | CREATE (p:item.typeName) SET p.item.indexProperty = item.indexPropertyValue)
这在语法上是错误的。有没有办法从列表中读取类型名称和属性名称,或者它们是否必须是"常量"?
答案 0 :(得分:1)
单纯用Cypher无法满足您的要求。但您可以安装APOC procedures并使用apoc.create.node
过程。此过程使用动态标签和指定的属性创建节点。
程序签名是:
CALL apoc.create.node(['Label'], {key:value,…})
您的代码如下:
FOREACH(item IN $list |
CALL apoc.create.node([item.typeName], {item : { indexProperty : item.indexPropertyValue} })
)