繁体   English   中英

根据MongoDB中的多个条件获取多个计数

[英]Get multiple counts based on multiple conditions in MongoDB

我想运行多个查询以获取MongoDB集合的计数。 就像,我想运行查询以找出未决状态用户和已完成状态用户。 像这样的事情,有没有办法在查询/聚合中编写这两个条件并在MongoDB中获得单独的结果?

我的要求是

我需要获取今天,昨天,上周和上个月的待处理,完成和开放状态用户的数量。

我需要这样的不同状态计数

{
 "today": {
    "pending": 10,
    "completed": 13,
    "open": 5
  },
  "yesterday": {
    "pending": 10,
    "completed": 13,
    "open": 5
  },
  "lastWeek": {
    "pending": 10,
    "completed": 13,
    "open": 5
  },
  "lastMonth": {
    "pending": 10,
    "completed": 13,
    "open": 5
  }
}

您可以使用聚合$group阶段:

db.Collection.aggregate([
    {$project: {
        // If your pending/completed field is set to 1 or true
        pending: {$cond: [{$eq: ["$pending", 1 /* or true */]}, 1, 0]},
        completed: {$cond: [{$eq: ["$completed", 1 /* or true */]}, 1, 0]}
    }},
    {$group: {
        _id: //what you want,
        pending: {$sum: "$pending"},
        completed: {$sum: "$completed"}
    }}
]);

暂无
暂无

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

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