У меня есть конвейер агрегации, который сортирует по последним 24 часам.Вывод Json обычно выглядит примерно так:
[{"_id": {"day": 28, "hour": 23}, "count": 2},
Однако, поскольку сегодня первое число месяца, оно перепуталось, а вышеприведенный json был «последним», в то время как все, что содержит «день»: 1, был отсортирован последним.
Я думаю, я исправил это, добавив в запрос 'month', но просто чтобы убедиться, что это правильный способ сортировки моего агрегата?
pipeline = [
{
"$project": {
"_id": 1,
"mac": 1,
"time": 1
}
},
{"$match": {"time": {"$gt": timenow-timedelta(hours=24)}}},
{"$group": {
"_id": {
'month': {"$month": {"date": '$time', "timezone": 'Africa/Johannesburg'}},
'day': {"$dayOfMonth": {"date": '$time', "timezone": 'Africa/Johannesburg'}},
'hour': {"$hour": {"date": '$time', "timezone": 'Africa/Johannesburg'}},
'mac': {'_id': "$mac"}
},
"count": {"$sum": 1}
}},
{
"$group": {
"_id": {
'month':"$_id.month",
'day': "$_id.day",
'hour': "$_id.hour",
},
"count": {"$sum": 1}
}
},
{"$sort": SON([("_id", -1)])}
]