如何实现MongoDB中基于15分钟时间窗口的分组聚合操作?
- 内容介绍
- 文章标签
- 相关推荐
本文共计866个文字,预计阅读时间需要4分钟。
原文:
在时间序列分析中,将数据按固定时长(如 15 分钟)切片并计算统计指标(如平均速度)是常见需求。但直接对 ISODate 字段做数学运算(如 "$minute" 取模)容易出错——关键问题在于:仅用 "$minute" 会忽略年、月、日、小时等更高精度的时间维度,导致跨小时/跨天的数据被错误归入同一分组(例如 01:58 和 02:13 的分钟值分别为 58 和 13,58 % 15 = 13,二者会被误判为同属“13 分钟区间”,实则相差近 15 分钟且跨小时)。
✅ 正确做法是:以完整时间点为基准,先提取年、年中第几天($dayOfYear)、小时($hour),再将分钟映射到最近的 15 分钟起点。
本文共计866个文字,预计阅读时间需要4分钟。
原文:
在时间序列分析中,将数据按固定时长(如 15 分钟)切片并计算统计指标(如平均速度)是常见需求。但直接对 ISODate 字段做数学运算(如 "$minute" 取模)容易出错——关键问题在于:仅用 "$minute" 会忽略年、月、日、小时等更高精度的时间维度,导致跨小时/跨天的数据被错误归入同一分组(例如 01:58 和 02:13 的分钟值分别为 58 和 13,58 % 15 = 13,二者会被误判为同属“13 分钟区间”,实则相差近 15 分钟且跨小时)。
✅ 正确做法是:以完整时间点为基准,先提取年、年中第几天($dayOfYear)、小时($hour),再将分钟映射到最近的 15 分钟起点。

