繁体   English   中英

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

[英]Limiting number of different kind of results in mongoDB aggregation

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM