我创建了一个 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。这会导致查询总是返回空值吗?