我正在努力解决本地化的日期问题。 存储在mongo中的所有日期都会自动转换为UTC,因此我们必须在检索它们之后将它们本地化。我很好,但.. ..
如果我按日期对记录进行查询,即YYY-MM-DD,则会出现问题。由于当地时间是格林威治标准时间3,任何时间超过21:00的记录都将在00:00存储在mongo中,因此对应于第二天。当在查询中按日期分组时,我将在错误的一天获得记录,并且无法从中恢复,因为我丢失了小时详细信息。
有没有办法在pymongo查询中本地化groupby命令中的日期?
以下是代码:
def records_by_date():
pipeline = []
pipeline.append({"$group": {
"_id": {
"$concat": [
{"$substr": [{"$year": "$date"}, 0, 4]},
"-",
{"$substr": [{"$month": "$date"}, 0, 2]},
"-",
{"$substr": [{"$dayOfMonth": "$date"}, 0, 2]}
]},
"record_id": {"$push": "$_id"},
"count": {"$sum": 1}
}})
pipeline.append({"$project": {
"_id": 0,
"date": "$_id",
"record_id": 1,
"count": 1
}})
pipeline.append({"$sort": {"date": 1}})
return self.collection.aggregate(pipeline)['result']
如果我添加小时详细信息,我可以在此之后验证记录,但之后我不会按日期分组。
有什么想法吗?