如何将AQL的所有结果合并到具有自定义属性的单个文档中

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

我有一个AQL查询遍历图,它总是应该从一组唯一的集合返回固定数量的文档。因此每个集合只会出现一次,只有一个文档。

我希望将它们全部合并到反映文档集合名称的属性下的单个文档中。

查询简单如下:

FOR v IN ANY "vertex/key" edge_collection RETURN v

返回示例结果:

[
  {
    "_key": "123",
    "_id": "foo/123",
    "_rev": "_WYhh0ji---",
    "foo_attribute": "lorem impsum"
  },
  {
    "_key": "456",
    "_id": "bar/456",
    "_rev": "_WYhh2ny---",
    "bar_attribute": "dolor sit amet"
  }
]

我想这样:

[
  {
    "foo": {
      "_key": "123",
      "_id": "foo/123",
      "_rev": "_WYhh0ji---",
      "foo_attribute": "lorem impsum"
    },
    "bar": {
      "_key": "456",
      "_id": "calendar/bar",
      "_rev": "_WYhh2ny---",
      "bar_attribute": "dolor sit amet"
    }
  }
]
arangodb aql
1个回答
1
投票
  • 为了从文档中获取集合名称,使用PARSE_IDENTIFIER function分别给出文档的集合名称和密钥
  • 使用square brackets理解动态生成文档属性
  • 只需合并查询结果即可

例:

RETURN MERGE(
    FOR v IN ANY "vertex/key" edge_collection
    RETURN {[PARSE_IDENTIFIER(v).collection]: v}
)
© www.soinside.com 2019 - 2024. All rights reserved.