У меня была одна проблема, из-за которой у меня была головная боль почти на один день.pymongo query by datetime
скрипты Python являются:
# coding:utf-8
import pymongo
import datetime, time
def query_data(IP,datefrom,dateto):
conn = pymongo.MongoClient(IP)
db = conn.mymongo
startdate = time.mktime(time.strptime(datefrom,'%Y-%m-%d'))
enddate = time.mktime(time.strptime(dateto,'%Y-%m-%d'))
# all above are correct definitely.
#
# but I got no result from this line below.
cursor = db.find({'username':'test','created':{'$gte':startdate,'$lt':enddate}})
print cursor.count()
# with above code, I got 0 returned though I can see it is nonzero in database.
#
# If I use this below with single datetime, I can see result. But it is not my intention.
# cursor = db.find({'username':'test','created':datefrom})
# print cursor.count()
tempData = []
for doc in cursor:
print doc['twitter']
tempData.append(doc['twitter'])
print len(tempData)
return tempData
result = query_data('192.168.100.20','2014-4-1','2014-5-1')
Вопрос заключается в том, что случилось с моим кодом выше? Или как я могу запрашивать данные из mongoDB между двумя датами, с скриптом pymongo?
В mongodb, datetime должен быть объектом 'ISODate', попробуйте сравнить' new Date (...) 'вместо – Anzel
Я пробовал двумя способами: db.find ({'username': 'test', ' created ': {' $ gte ': new Date (datefrom),' $ lt ': new Date (dateto)}}) и db.find ({' username ':' test ',' created ': {' $ gte ':' new Date (datefrom) ',' $ lt ':' new Date (dateto) '}}) В любом случае результаты не дали мне никаких результатов. Я использовал там неправильный формат? –
Вы пробовали использовать 'datetime.datetime'? – Anzel