我在MongoDB中有一个集合,其文档 struct 如下:
_id:6591f2fe8424cddac5b1d4aa
captureTime:1704063737
deviceId:200220
sensorId:1431
我在Aggregate Group阶段有这个代码,它以1小时为间隔计算文档数量 组别:
{
"_id": {
"sensorId":"$sensorId",
"year": { "$year": { "$toDate": { "$multiply": ["$captureTime", 1000] } } },
"month": { "$month": { "$toDate": { "$multiply": ["$captureTime", 1000] } } },
"day": { "$dayOfMonth": { "$toDate": { "$multiply": ["$captureTime", 1000] } } },
"hour": { "$hour": { "$toDate": { "$multiply": ["$captureTime", 1000] } } },
"interval": {
"$subtract": [
{"$minute": { "$toDate": { "$multiply": ["$captureTime", 1000] } }},
{"$mod": [{"$minute": { "$toDate": { "$multiply": ["$captureTime", 1000] } }}, 60]}
]
}
},
"count": { "$sum": 1 },
"time_f": { "$first": { "$dateToString": {
"format": "%Y:%m:%d %H:%M:%S",
"date": { "$toDate": { "$multiply": ["$captureTime", 1000] } } }}},
"time_l": { "$last": { "$dateToString": {
"format": "%Y:%m:%d %H:%M:%S",
"date": { "$toDate": { "$multiply": ["$captureTime", 1000] } } }}},
"device_Id_f": {"$first": "$deviceId"},
"sensor_Id_f": {"$first": "$sensorId"},
}
输出文档如下
_id: Object
count: 336
time_f: "2024:01:01 00:00:20"
time_l: "2024:01:01 00:58:35"
device_Id_f: 200220
sensor_Id_f: 1431
_id: Object
count: 18
time_f: "2024:01:01 01:00:17"
time_l: "2024:01:01 01:56:18"
device_Id_f: 200220
sensor_Id_f: 1431
time_interval: "2024:01:01 02:00:00"
然而,在输出文件中,我想知道它所属的间隔.例如,如下所示:
_id: Object
count: 336
time_f: "2024:01:01 00:00:20"
time_l: "2024:01:01 00:58:35"
device_Id_f: 200220
sensor_Id_f: 1431
time_interval: "2024:01:01 01:00:00"
_id: Object
count: 18
time_f: "2024:01:01 01:00:17"
time_l: "2024:01:01 01:56:18"
device_Id_f: 200220
sensor_Id_f: 1431
time_interval: "2024:01:01 02:00:00"
我知道这是我可以在我的应用程序中通过python来做的事情,但我认为如果我可以在MongoDB中做这件事,那会更好.