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

如何编写Cypher查询输出适配D3图谱的节点与链接格式数据

适配D3 Graph格式的Neo4j Cypher查询方案

你原来使用的全节点导出逻辑没有做属性映射和关联关系聚合,直接调整查询语句即可输出符合要求的结构,完整可运行查询如下:

// 匹配所有电影、参演演员及二者的关联关系
MATCH (m:Movie)-[r:ACTED_IN]-(p:Person)
// 聚合节点、关联关系,统一映射为D3适配的格式
WITH 
  // 合并电影节点、演员节点为统一的nodes数组
  COLLECT(DISTINCT {
    id: m.name,
    labels: labels(m),
    revenue: m.revenue,
    year: m.year,
    genres: m.genres,
    director: m.director,
    rating: m.rating,
    runtime: m.runtime
  }) + 
  COLLECT(DISTINCT {
    id: p.name,
    labels: labels(p)
  }) AS nodes,
  // 生成links数组,source、target直接用名称字段取值
  COLLECT(DISTINCT {
    source: m.name,
    target: p.name,
    relation: type(r)
  }) AS links
// 直接返回D3可直接使用的结构
RETURN {nodes: nodes, links: links} AS d3_graph_data

// 如需直接导出为本地JSON文件,替换上方RETURN语句为以下内容即可
// CALL apoc.export.json.data(
//   {nodes: nodes, links: links}, 
//   "file:///d3_graph_data.json", 
//   {writeMode: "Overwrite"}
// )

适配说明

  • 节点格式完全符合要求:所有节点统一用name属性作为id,电影节点额外保留revenue、year等指定属性,演员节点无冗余字段
  • 关联关系直接使用电影名、演员名作为source和target值,适配D3力导向图的默认字段规则
  • 适配Neo4j 5.x最新的参数校验规则,无隐式参数引用,无需额外调整配置即可运行

注意事项

  • 如果你的电影节点的名称字段为title而非name,对应替换查询中所有m.name为m.title即可
  • 需要导出文件前请确认neo4j.conf中已开启配置项apoc.export.file.enabled=true,且导出路径属于Neo4j允许的文件操作目录
  • 如果需要包含无参演关系的孤立节点,可额外增加全节点匹配逻辑过滤所需标签的节点加入nodes数组即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:39:00