Neo4j返回一个节点数组作为propery或seperate数组的节点

时间:2017-01-21 14:51:28

标签: neo4j cypher

我有四个节点 - [belongsTo] - > (ContainerNode) 我希望json作为单个容器节点返回,该节点包含链接到它的所有节点的数组。例如:

 "nodes": [
      {
        "id": "240",
        "name":"MyNodeContainer",
        "Type": "ContainerNode"
        "SubNodes": [
                   {
                     "id": "1",
                    "name":"MyNodeA",
                    "Type": "node"
                   },
                   {
                     "id": "2",
                    "name":"MyNodeB",
                    "Type": "node"
                   }
                 ]
      },

看起来很简单,但我能得到的是所有节点的默认值都是相等的。我希望结果清楚地表明容器节点与其余节点是分开的。数组属性似乎最直观,但我也满足于两个列表 - 一个用于单个nodeContainer,另一个用于包含的节点

1 个答案:

答案 0 :(得分:0)

这样的事情会引导你走向最终目标吗?它构建包含节点的集合,然后将其作为ContainerNode的属性返回。

match (c:ContainerNode)<-[:BELONGS_TO]-(n:Node)
with c, collect({ id: id(n), name: n.name, type: labels(n)[0] }) as nodes
with { id: id(c), name: c.name, type: labels(c)[0], SubNodes: nodes } as containerNode
return {nodes: collect(containerNode) }