如何在JavaScript中从Neo4J获取完整图JSON数据?求APOC完整示例
使用apoc.export.json.data导出图数据的完整示例
你需要的是通过Cypher结合APOC的apoc.export.json.data导出图数据的可运行示例,以下是正确的实现方式:
完整可运行Cypher代码
// 匹配任意路径,提取所有涉及的节点和关系 MATCH g=(someNode)-[someRel]-() // 将节点和关系分别收集为集合 WITH collect(someNode) AS exportNodes, collect(someRel) AS exportRels // 调用APOC导出函数,以流的形式返回JSON结果(也可导出到文件) CALL apoc.export.json.data(exportNodes, exportRels, {stream: true}) YIELD data RETURN data
参数说明
{stream: true}:让导出的JSON直接返回在查询结果中,适合快速查看- 如果需要导出到文件,可替换为
{file: "your-output-path/graph-data.json"}(路径需符合Neo4j的文件访问权限配置)
预期返回的JSON格式
{ "nodes": [ { "id": "a1a1", "labels": ["Something"], "prop_a": 99 }, { "id": "a2a2", "labels": ["Something"], "prop_a": 77 }, { "id": "a3a3", "labels": ["User"], "prop_a": 33 } ], "edges": [ { "id": "a1a1", "type": "OWNS", "prop_a": 99 }, { "id": "a2a3", "type": "OWNS", "prop_a": 77 }, { "id": "a4a5", "type": "HAS", "prop_a": 33 } ] }
注:关系的字段是
type而非labels,这是Neo4j中关系类型的标准表述,和节点的标签区分开
扩展说明
- 若只需导出特定标签/类型的节点或关系,可在MATCH语句中添加过滤条件,例如:
MATCH g=(n:User)-[r:OWNS]-() WITH collect(n) AS exportNodes, collect(r) AS exportRels CALL apoc.export.json.data(exportNodes, exportRels, {stream: true}) YIELD data RETURN data - 可通过配置参数控制导出内容,比如
{stream: true, skipProperties: ["password"]}跳过敏感属性,{useTypes: true}保留属性的类型信息
内容的提问来源于stack exchange,提问作者Om Solari
相关产品推荐
相关产品推荐

