【问题标题】:Limiting number of different kind of results in mongoDB aggregation限制 mongoDB 聚合中不同类型结果的数量
【发布时间】:2018-02-26 20:12:07
【问题描述】:

我想编写一个包含以下文档的聚合:

{ type: "dog", name: "Charlie" }
{ type: "dog", name: "Felix" }
{ type: "dog", name: "John" }
{ type: "cat", name: "Tum" }

并返回每种类型最多 2 个,不以任何单独的方式分组:

{ type: "dog", name: "Charlie" }
{ type: "dog", name: "Felix" }
{ type: "cat", name: "Tum" }

意思是最多两只猫加上最多两只狗。是否分组和限制到这里的方式?如果是这样 - 如何?

【问题讨论】:

    标签: node.js mongodb mongoose mongodb-query aggregation-framework


    【解决方案1】:

    您可以按type 对文档进行分组,为每个组创建一个names 列表,$project 该列表只有两个元素 $slice strong> 然后使用 $unwind 将列表展平,如下所示:

    Model.aggregate([
        { "$group": {
            "_id": "$type",
            "data": { "$push": "$name" }
        } },
        { "$project": {
            "type": "$_id",
            "name": { "$slice": ["$data", 2] }
        } },
        { "$unwind": "$name" }
    ]).exec(callback);
    

    【讨论】:

      猜你喜欢
      • 2015-12-13
      • 2017-01-05
      • 2021-10-13
      • 2015-07-26
      • 1970-01-01
      • 2019-07-09
      • 2021-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多