Neo4j返回一个节点,其中节点数组作为属性数组或单独数组

Neo4j返回一个节点,其中节点数组作为属性数组或单独数组,neo4j,cypher,Neo4j,Cypher,我有四个节点-[belongTo]->(ContainerNode) 我希望json作为单个容器节点返回,其中包含链接到它的所有节点的数组。例如: "nodes": [ { "id": "240", "name":"MyNodeContainer", "Type": "ContainerNode" "SubNodes": [ { "id":

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

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

这看起来很简单,但我能得到的只是默认的所有节点都以相等的方式返回。我希望结果表明容器节点与其他节点是分开的。数组属性似乎最直观,但我也满足于两个列表——一个用于单节点容器,另一个用于包含的节点?它构建包含节点的集合,然后将其作为
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) }
匹配(c:ContainerNode)