You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Cypher从JSON文件创建以@type为标签的Neo4J节点?

实现方法

你可以利用Cypher的动态标签功能,结合APOC的JSON加载命令完成需求,具体查询如下:

CALL apoc.load.json("example.json") YIELD value
UNWIND value.items as items
// 提取@type作为节点标签,用反引号转义特殊字符@
WITH items, items.`@type` AS nodeLabel
// 动态创建对应标签的节点
CREATE (n:`${nodeLabel}`)
// 将items的所有属性赋值给节点
SET n = items
// 可选:移除@type属性(若不需要在节点中保留该字段)
REMOVE n.`@type`
RETURN n

关键细节说明:

  • 因为@type包含特殊字符@,Cypher中必须用反引号`包裹属性名才能正确识别
  • `${nodeLabel}`是动态标签语法,会把变量nodeLabel的实际值作为节点的标签(即A、B、C)
  • 如果需要保留@type属性在节点上,直接删除REMOVE n.@type``语句即可

如果要避免重复创建相同id的节点,可以用MERGE替代CREATE,基于标签和id做匹配:

CALL apoc.load.json("example.json") YIELD value
UNWIND value.items as items
WITH items, items.`@type` AS nodeLabel
// 匹配已有节点,不存在则创建
MERGE (n:`${nodeLabel}` {id: items.id})
// 更新节点属性(仅覆盖已有属性,新增属性会保留)
SET n += items
RETURN n

内容的提问来源于stack exchange,提问作者Michael Manfield

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 20:55:28