如何按分钟聚合 MongoDB 文档?

惊人的涂鸦者

我在 MongoDB 5.0.2 中名为“文件”的集合中有文档。此集合用于用户上传的内容。我想以 1 小时为间隔计算过去 24 小时内上传的文件数。

例如,用户在 13:00 上传了 3 个文件,在 14:00 上传了 2 个文件,在 15:00 上传了 0 个文件,以此类推。

我已经在我的 Mongo 文档中存储了一个“时间戳”字段,它是来自 Javascript 的 ISODate 对象。

我查看了无数的 stackoverflow 问题,但找不到任何适合我的需求或我理解的内容。

沃恩弗里德·多姆沙伊特

会是这个:

{ $match: {timestamp: {$gt: moment().startOf('hour').subtract(24, 'hours').toDate() } } }, 
{ $group:
  _id: {
    y: {$year: "$timestamp"},
    m: {$month: "$timestamp"},
    d: {$dayOfMonth: "$timestamp"},
    h: {$hour: "$timestamp"},
  },
  count: ...
}

或者在 Mongo 5.0 版中你可以做

{ $group:
  _id: { $dateTrunc: { date: "$timestamp", unit: "hour" } },
  count: ...
}

对于任何与日期时间相关的操作,我推荐使用moment.js

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章