MongoDB按指定年份筛选后按月分组统计各月记录数实现问题
解决方案
完整可运行代码
// 以筛选2008年为例,可自行替换目标年份数值 database.coll.aggregate([ // 方式1:直接匹配日期年份,写法简洁,适合临时查询 { $match: { $expr: { $eq: [{$year: "$date"}, 2008] } } }, // 方式2:日期范围匹配,date字段建有索引时性能更高,两种方式二选一即可 // { // $match: { // "date": { // $gte: ISODate("2008-01-01T00:00:00Z"), // $lt: ISODate("2009-01-01T00:00:00Z") // } // } // }, { $group: { "_id": {$month: "$date"}, // 按月份分组 "total": {$sum: 1} // 统计每个月的记录总数 } } ])
说明
- 查询返回结果中
_id字段对应1~12的月份数值,total字段对应该月的记录总数 - 若你的数据库时区和业务时区不一致,可在
$year、$month运算符中补充时区参数调整结果
内容的提问来源于stack exchange,提问作者abc
相关产品推荐
相关产品推荐

