You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB查询指定年份各月文档数量(时间字段为毫秒时间戳)

MongoDB按指定年份筛选后统计每月文档数的查询语句

兼容原有写法的完整查询

db.myCollection.aggregate([
   {
      $project: {
          year: { $year: { $add: [new Date(0), "$time"] } },
          month: { $month: { $add: [new Date(0), "$time"] } }
      }
   },
   { $match: { year: 2021 } },
   {
      $group: {
          _id: "$month",
          documentCount: { $sum: 1 }
      }
   },
   // 可选:按月份升序排列结果
   { $sort: { _id: 1 } }
])

查询说明

  • 新增month字段提取逻辑:$month操作符会从转换后的日期中返回1-12的整数,对应1月至12月
  • $group阶段以月份为分组键,用$sum: 1累加统计每个月的文档总数
  • 可选的$sort阶段可直接输出按月份顺序排列的结果,无需手动整理

高性能优化版本(推荐大数据量场景使用)

// 2021年时间范围对应的毫秒级时间戳
const startTime = 1609459200000; // 2021-01-01 00:00:00 UTC
const endTime = 1640995200000; // 2022-01-01 00:00:00 UTC

db.myCollection.aggregate([
   // 优先按时间戳范围过滤,time字段有索引时性能提升明显
   { $match: { time: { $gte: startTime, $lt: endTime } } },
   {
      $project: {
          month: { $month: { $add: [new Date(0), "$time"] } }
      }
   },
   {
      $group: {
          _id: "$month",
          documentCount: { $sum: 1 }
      }
   },
   { $sort: { _id: 1 } }
])

优化说明

将时间范围过滤放在聚合第一阶段,可直接利用time字段的索引跳过所有非2021年的文档,避免全表扫描计算年份,查询效率远高于原有写法。

内容的提问来源于stack exchange,提问作者vkr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 08:12:02