使用 Unix 时间戳查询 MongoDB 总是返回空值

问题描述 投票:0回答:0

我创建了一个 mongo 数据库,其中包含使用 riot api 获取的有关英雄联盟比赛的信息。玩游戏的日期在 unix 中带有时间戳。我正在尝试使用另一个 unix 时间戳查询我的数据库以创建一个 pandas 数据框并进行一些分析。

    game_stats_docs = game_stats.find({"unix_creation": {"gte" : start_date}}, {"_id": 0})

出于某种原因,game_stats_docs 在尝试查询日期时总是返回空。如果我查询

    game_stats_docs = game_stats.find({"win": False}, {"_id": 0})

    game_stats_docs = game_stats.find({"champion": "Zeri"}, {"_id": 0})

或任何其他数量的查询,文档返回适当的匹配项。

最初,我可以对 start_*date 和 end_*date 进行硬编码,查询将返回适当的匹配项,但现在我试图从另一个集合中的 mongo 中提取开始和结束日期。

def get_dates():
    global start_date, end_date
    time_doc = times.find_one()
    if time_doc:
        start_date = time_doc['start_date']
        end_date = time_doc['end_date']

    if request.method == 'POST':
        data = request.json

        new_start_date = time.mktime(datetime.datetime.strptime(data['startDate'], "%Y-%m-%d").timetuple())
        new_end_date = time.mktime(datetime.datetime.strptime(data['endDate'], "%Y-%m-%d").timetuple())

        new_start_date = int(new_start_date)
        new_end_date = int(new_end_date)
        times.update_one({}, {'$set': {'start_date': new_start_date, 'end_date': new_end_date}}, upsert=True)

        # Update the global variables
        start_date = new_start_date
        end_date = new_end_date

    return {'message': 'Dates updated successfully.'}

我可以成功地从我的前端获取日期并将它们返回到我在 unix 中的数据库。

但是,在我的“时间”集合中存储开始和结束日期时,unix 时间戳存储为 Int32。在我的 game_stats 集合中,unix 时间戳存储为 Int64。这会导致查询总是返回空值吗?

python mongodb flask backend unix-timestamp
© www.soinside.com 2019 - 2024. All rights reserved.