如何按小时聚合 MongoDB 文档?
Posted
技术标签:
【中文标题】如何按小时聚合 MongoDB 文档?【英文标题】:How can I aggregate MongoDB documents by hour? 【发布时间】:2021-10-26 07:20:31 【问题描述】:我在 MongoDB 5.0.2 中名为“files”的集合中有文档。此集合用于用户上传的内容。我想统计过去 24 小时内以 1 小时为间隔上传的文件数。
例如,用户在 13:00 上传了 3 个文件,在 14:00 上传了 2 个文件,在 15:00 上传了 0 个文件,以此类推。
我已经在我的 Mongo 文档中存储了一个“时间戳”字段,它是来自 javascript 的 ISODate 对象。
我查看了无数的 *** 问题,但找不到任何适合我需要或我理解的问题。
【问题讨论】:
【参考方案1】:会是这个:
$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 库
【讨论】:
以上是关于如何按小时聚合 MongoDB 文档?的主要内容,如果未能解决你的问题,请参考以下文章