2016-02-20 20 views
0

这是我的MongoDB的文件检索基于ISO日期时间格式从MongoDB的数据,如何使用python

{ "_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 date.when我提供了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 

但是,当我尝试运行此,它不给适当的输出,因为我want..Can任何人帮我解决这个问题,因为我是新来的蟒蛇MongoDB的。

+0

请查看你给的文件。他们真的有这个奇怪的数量的空白吗?也不清楚你的目标是什么。也许你可以解决这个问题,例如通过解释您给出的样本数据的预期结果... – flaschbier

+0

尝试更改以下部分:* db = conn ['yourDbName'] *,* col = db ['collectionName'] * and * col.find( ...)* – joao

+1

无关:'datetime.today()'返回当地时区的当前时间,使用'datetime.utcnow()'获取UTC时间(由MongoDB使用)。 – jfs

回答

1

这里是你的问题的答案sruthy,

from pymongo import MongoClient 
from datetime import datetime 
#make the mongodb connection to your localhost 
conn=MongoClient("mongodb://localhost:27017") 
db=conn['index']#connection to your database 
r=[] 
for doc in db['turnover'].find(): 
     y=doc['time'].year 
     m=doc['time'].month 
     d=doc['time'].day 
     c=db['turnover'].find({"time":datetime(y,m,d,10,0,0)}).count() 
     if c>0: 
      a=db['turnover'].find({"time":datetime(y,m,d,10,0,0)}) 
      for ele in a: 
       r2.append(ele) 
print r