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

Arangodb 如何将AQL的所有结果合并到具有自定义属性的单个文档中,arangodb,aql,Arangodb,Aql,我有一个AQL查询遍历图,它应该总是从一组唯一的集合返回固定数量的文档。 因此,每个集合只发生一次,并且只包含一个文档 我希望在反映文档集合名称的属性下将它们合并到一个文档中 查询如下所示: FOR v IN ANY "vertex/key" edge_collection RETURN v 将示例结果返回为: [ { "_key": "123", "_id": "foo/123", "_rev": "_WYhh0ji---", "foo_attribute

我有一个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"
    }
  }
]
  • 要从文档中获取集合名称,请使用分别给出文档集合名称和密钥的
    PARSE_IDENTIFIER
  • 使用理解动态生成文档属性
  • 只需合并查询结果
例如:

RETURN MERGE(
    FOR v IN ANY "vertex/key" edge_collection
    RETURN {[PARSE_IDENTIFIER(v).collection]: v}
)

如果同一集合中有多个文档怎么办?
foo
bar
不应该是包含各自集合中所有文档的数组吗?在我的问题中,存在(可能不清楚)约束,即文档集合是唯一的,这意味着每个集合将不超过一个文档。我为你做了另一个QA