[英]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.