【发布时间】:2016-06-01 23:57:10
【问题描述】:
这是我的 mongodb 文档,
{ "_id" : ObjectId("56c198f53869650eb0e2bc7a"), "Date" : ISODate("2016-02-15T14:50:14Z"), "nocontract" : 299039, "turnover" : 14882.65, "instrument" : "NSEFUT"}
{ "_id" : ObjectId("56c19ffe3869650eb0e2bc7b"), "Date" : ISODate("2016-02-15T15:20:45Z"), "nocontract" : 334464, "turnover" : 16650.6, "instrument" : "NSEFUT"}
{ "_id" : ObjectId("56c1a7073869650eb0e2bc7c"), "Date" : ISODate("2016-02-15T15:30:15Z"), "nocontract" : 351399, "turnover" : 17487.73, "instrument" : "NSEFUT"}
{ "_id" : ObjectId("56c1ae103869650eb0e2bc7d"), "Date" : ISODate("2016-02-15T15:30:15Z"), "nocontract" : 351401, "turnover" : 17487.84, "instrument" : "NSEFUT"}
{ "_id" : ObjectId("56c1b5183869650eb0e2bc7e"), "Date" : ISODate("2016-02-15T15:30:15Z"), "nocontract" : 351401, "turnover" : 17487.84, "instrument" : "NSEFUT"}
我需要查询 iso 日期。当我提供 10:00 时,无论 10:00 时我的数据库中有什么记录,我都需要通过 python 检索。 这里我写了代码:
from datetime import datetime, timedelta
from pymongo import MongoClient
conn = MongoClient("mongodb://localhost:27017")
db = conn.index
x = datetime.today()
off = 10
n = off + 1
y = x.replace(day=x.day, hour=off, minute=0, second=0, microsecond=0)
date1 = datetime(2016, 1, 15, off, 0, 0)
for r in db.turnover.find({ 'Date': {'$gte': date1, '$lt': y}}):
print r
但是当我尝试运行它时,它没有提供我想要的正确输出。任何人都可以帮助我解决这个问题,因为我是 python 和 mongodb 的新手。
【问题讨论】:
-
请查看您提供的文件。他们真的有那么多奇怪的空白吗?此外,您的目标是什么也不清楚。也许你可以解决这个问题,例如通过根据您提供的样本数据解释预期结果...
-
尝试更改以下部分:db = conn['yourDbName']、col = db['collectionName'] 和 col .find(...)
-
无关:
datetime.today()返回本地时区的当前时间,使用datetime.utcnow()获取UTC时间(MongoDB使用)。
标签: python mongodb date datetime pymongo