【问题标题】:AQL how to collect documents into arrays under their collection name?AQL 如何将文档收集到其集合名称下的数组中?
【发布时间】:2018-02-25 09:14:25
【问题描述】:

在回答之前的questions 时,展示了如何在其集合名称下收集文档,但有一个明确的限制,即查询只为每个集合返回一个文档。

@CoDEmanX 询问如果查询返回同一集合的多个文档怎么办?

【问题讨论】:

    标签: arangodb aql


    【解决方案1】:

    将不得不修改查询以使用聚合:

    FOR doc IN ANY "vertex/key" edge_collection
    COLLECT collection = PARSE_IDENTIFIER(doc).collection INTO collected
    RETURN MERGE({
        [collection]: collected[*].doc
    })
    
    • 按集合名称对文档进行分组COLLECT collection = PARSE_IDENTIFIER(doc).collection INTO collected
    • 以集合名称为属性和集合文档数组为值的表单文档{ [collection]: collected[*].doc }
    • 将结果合并到单个文档中

    【讨论】:

    • 为什么不使用"collection": PARSE_IDENTIFIER(v).collectionRETURN { [collection]: groups[*].i.item }?对我来说似乎没有必要为集合名称创建一个数组,只是为了从中获取唯一的元素。
    • 感谢@CoDEmanX 指出不必要的过度复杂化。我不会在午夜之后发布 QA,因为我已经筋疲力尽了。我已将答案重构为尽可能简短。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-19
    • 2018-12-22
    • 2022-11-16
    • 1970-01-01
    • 2018-07-10
    • 2018-05-30
    相关资源
    最近更新 更多