首页/数据/NoSQL 速查/聚合日期函数 $dateToString / $dateTrunc
MongoDB99 条

聚合日期函数 $dateToString / $dateTrunc

日期维度汇总常用:$dateToString 格式化、$dateTrunc 截断到指定时间粒度、$dateDiff 求差,按日按小时都能直接分组。

NoSQL 速查数据更新于 2026-10-12
格式化{ $dateToString: { format: "%Y-%m-%d", date: "$ts", timezone: "+08:00" } }
截断{ $dateTrunc: { date: "$ts", unit: "hour" } }
求差{ $dateDiff: { startDate: "$a", endDate: "$b", unit: "second" } }

按天统计

按天统计
db.orders.aggregate([
  { $group: {
      _id: { $dateToString: { format: "%Y-%m-%d", date: "$ts", timezone: "+08:00" } },
      total: { $sum: "$qty" }
  } },
  { $sort: { _id: 1 } }
])
timezone 支持时区名或偏移量;不写时按 UTC 输出,跨天统计时会偏移。

易错点

  • 聚合时区与存储时区不填会差 8 小时,报表类需求把 timezone 固化在代码里

数据来源与参考

  • MongoDB Manual: $dateToString
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌