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);