我可以从Neo4j的列表中读取类型或属性的名称吗?

时间:2018-02-09 10:32:15

标签: neo4j cypher

我正在使用查询

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)

这在语法上是错误的。有没有办法从列表中读取类型名称和属性名称,或者它们是否必须是"常量"?

1 个答案:

答案 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} })
)