pymongo本地化日期聚合

时间:2014-04-19 04:09:15

标签: python pymongo mongodb-query

我正在努力解决本地化的日期问题。 存储在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']

如果我添加小时详细信息,我可以在此之后验证记录,但之后我不会按日期分组。

有什么想法吗?

0 个答案:

没有答案
相关问题