【问题标题】:Drawing a graph using d3js from neo4j/cypher json output使用来自 neo4j/cypher json 输出的 d3js 绘制图形
【发布时间】:2014-12-07 21:30:18
【问题描述】:

是否可以在单个密码查询中返回特定路径的不同节点和边缘。例如,使用电影图,下面的查询分别返回电影和演员,我想一起返回所有节点。使用 path p = (...) 和 nodes(p) 实际上会返回节点对,而不管是否使用 distinct。

match (m:Movie {name: "Rain"}) -- (p:Person) return {nodes: collect(distinct {name: m.title}), actor: collect(distinct {name: a.name }), 链接:collect({source: m.title, target: a.name})}

提前感谢您的帮助, 皮埃尔

【问题讨论】:

  • 顺便说一句,我也没有设法使用 union 来对演员和电影进行分组。
  • 你不能像这样从 Cypher 返回 JSON 对象。考虑备份几个步骤并思考 neo4j 如何连接到您的 javascript 应用程序。一般来说,您需要从 Cypher 获取结果集,然后使用单独的工具(不是 neo4j)将其转换为适合 d3js 的 JSON 对象。

标签: neo4j cypher


【解决方案1】:

在内部得到了一些帮助,所以我正在分享答案。使用 neo'j 2.1.5,可以使用 unwind。 查询后的查询一次返回路径中不同节点和不同边的列表 - 至少它适用于我的示例:

match path = (p:Person {Name: 'Rain'})-[]-(m:Movie) unwind nodes(path) as p unwind rels(path) as r
return {nodes: collect(distinct p), links: collect(DISTINCT {source: id(startNode(r)), target: id(endNode(r))})}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-10-11
  • 1970-01-01
  • 2014-04-14
  • 2018-05-29
  • 1970-01-01
  • 2012-09-28
  • 2013-04-06
  • 1970-01-01
相关资源
最近更新 更多