ArangoDB 将结果分组到一个键中

问题描述 投票:0回答:1

我有一个图(它是一棵树),由一个顶点集合和一个边集合组成。 我正在尝试进行 AQL 查询,以对象的形式返回其中一些(最大深度 2)。

我正在使用这个查询:

FOR v,e IN 0..1 OUTBOUND 'nodes/root' GRAPH 'myGraph' 
        OPTIONS { uniqueVertices: 'path', order: 'bfs' } 
RETURN {"nodes":v, "edges":e}

但我明白了:

[
  {
    "nodes": {
      "_key": "root",
      "_id": "nodes/root",
      "metadata": {}
    },
    "edges": null
  },
  {
    "nodes": {
      "_key": "sys-1",
      "_id": "nodes/sys-1",
      "metadata": {}
    },
    "edges": {
      "_key": "sys-1-root",
      "_id": "relationships/sys-1-root",
      "_from": "nodes/root",
      "_to": "nodes/sys-1",
      "metadata": null
    }
  },
  {
    "nodes": {
      "_key": "sys-4",
      "_id": "nodes/sys-4",
      "metadata": {}
    },
    "edges": {
      "_key": "sys-4-root",
      "_id": "relationships/sys-4-root",
      "_from": "nodes/root",
      "_to": "nodes/sys-4",
      "metadata": null
    }
  }
]

我想要这样的东西:

[
   {
      "nodes":[
         {
            "_key":"root",
            "_id":"nodes/root",
            "metadata":{
               
            }
         },
         {
            "_key":"sys-1",
            "_id":"nodes/sys-1",
            "metadata":{
               
            }
         },
         {
            "_key":"sys-4",
            "_id":"nodes/sys-4",
            "metadata":{
               
            }
         }
      ],
      "edges":[
         null,
         {
            "_key":"sys-1-root",
            "_id":"relationships/sys-1-root",
            "_from":"nodes/root",
            "_to":"nodes/sys-1",
            "metadata":null
         },
         {
            "_key":"sys-4-root",
            "_id":"relationships/sys-4-root",
            "_from":"nodes/root",
            "_to":"nodes/sys-4",
            "metadata":null
         }
      ]
   }
]

我一直在阅读 stackoverflow 中的文档和其他问题,但找不到找到方法。谢谢!

arangodb aql
1个回答
1
投票

这看起来就像是为数组收缩而量身定做的箱子

LET res = (
  FOR v,e IN 0..1 OUTBOUND 'nodes/root' GRAPH 'myGraph' 
          OPTIONS { uniqueVertices: 'path', order: 'bfs' } 
  RETURN {"nodes":v, "edges":e}
)
RETURN {'nodes': res[*].nodes, 'edges': res[*].edges}
© www.soinside.com 2019 - 2024. All rights reserved.