mongodb - MongoDB聚合统计小时范围内的产品数量
问题描述
我正在使用 mongodb 图表。是否可以获得时间范围内的产品数量(例如:12:00am - 5:00am)
例如,我在凌晨 3:00 添加了 2 个产品,然后在凌晨 4:00 添加了 5 个产品。
我通过它的 createdAt 字段来计算产品。
我有一个这样的示例数据:
Products: {
"_id": {
"$oid": "603c62272aacbc0017e2e4b5"
},
"amount": 110,
"user": {
"$oid": "5f7408cf7889580017c369a1"
},
"transaction_id": "cZ3fgffFI",
"createdAt": {
"$date": "2021-03-01T03:40:23.300Z"
},
"updatedAt": {
"$date": "2021-03-01T04:13:25.908Z"
},
"__v": 0,
},
{
"_id": {
"$oid": "603c62272aacbc0017e2e4b5"
},
"amount": 110,
"user": {
"$oid": "5f7408cf7889580017c369a1"
},
"transaction_id": "cZ3fgffFI",
"createdAt": {
"$date": "2021-03-01T03:40:23.300Z"
},
"updatedAt": {
"$date": "2021-03-01T04:13:25.908Z"
},
"__v": 0,
},
{
"_id": {
"$oid": "603c62272aacbc0017e2e4b5"
},
"amount": 110,
"user": {
"$oid": "5f7408cf7889580017c369a1"
},
"transaction_id": "cZ3fgffFI",
"createdAt": {
"$date": "2021-03-01T03:40:23.300Z"
},
"updatedAt": {
"$date": "2021-03-01T04:13:25.908Z"
},
"__v": 0,
}
输出:
我正在使用 createdAt 字段计算产品。
凌晨 3:00 2 个产品 凌晨 4:00 5 个产品
解决方案
您可以简单地使用按小时分组来获取每小时计数数据,如下所示,
[{
'$match':{
'$and':[ {'createdAt':{'$gte':'2021-03-08T00:00:00.000Z'}},{'createdAt':{'$lte':'2021-03-08T05:00:00.000Z'}}]
}
},
{
'$project': {
'hours': {
'$hours': 'createdAt'
}
}
}, {
'$group': {
'_id': {
'hours': '$hours',
},
'total': {
'$sum': 1
},
'hours': {
'$hours': '$hours'
}
}
}
]
此外,您可以使用 match 为您需要的其他过滤器添加任何其他条件。
推荐阅读
- oauth - RFC6749 OAuth 2.0 可以有多个授权端点?
- javascript - 如何检查 ES6 静态方法是否存在
- image - 为什么这个 mdbootstrap 轮播代码会调整我的图像大小?
- python-3.x - 如何修复 Thycotic Secret Server 的 API 中的“SDK 客户端路径无效”错误
- java - 移动设备:Android:输入文本后如何按 Enter
- c# - 如何在运行时设置统一应用程序版本?
- reactjs - React hookrouter 多种布局
- .htaccess - .htaccess RewriteRule 两个地址之间的哈希值
- .net-core - 将 .netstandard2.0 NuGet 与 .NetFramework4.6.2 一起使用
- azure - ARM 模板部署中缺少 Azure Web 应用暂存槽应用设置