2016-02-20 21 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