Node.js mongoDB聚合中不同类型结果的数量限制

Node.js mongoDB聚合中不同类型结果的数量限制,node.js,mongodb,mongoose,mongodb-query,aggregation-framework,Node.js,Mongodb,Mongoose,Mongodb Query,Aggregation Framework,我想编写一个包含以下文档的聚合: { 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:

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

{ 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" }

意思是最多两只猫加最多两只狗。分组和限制是否会影响到这一点?如果是-如何操作?

您可以按
类型对文档进行分组,创建每个组的
名称列表,该列表仅包含两个元素,然后使用将列表展平,如下所示:

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