[英]How to make a query date in mongodb using pymongo?
我正在嘗試在 mongodb 中執行查詢日期,但結果始終為空。 我的查詢如下:
//in the begin code
def __init__(self):
self.now = datetime.now()
self.db = conexaoMongo()
self.horaInicio = self.now - timedelta(minutes=1)
def resultadoConsulta(self, modo, porta, id_node):
#print "Porta e No ", porta, id_node
resultadoMongo = []
mediaFinal = False
try:
json = {'id_no': int(id_node), 'datahora': {'$gte': self.horaInicio, '$lt': self.now}, 'porta': porta}
print "COnsulta a ser realizada: ", json
resultadoMongo = self.db.queryMongoOne(json)
@Joni是正確的,您需要使用datetime
。
from datetime import datetime
from pymongo import Connection
# i have updated and included the complete code
client = Connection('localhost', 27017)
db = client['database'] # your database name
inoshare = db['inoshare']
# convert your date string to datetime object
start = datetime(2014, 9, 24, 7, 51, 04)
end = datetime(2014, 9, 24, 7, 52, 04)
inoshare.find( {'id_no': 1, 'datahora': {'$lt': end, '$gte': start}, 'porta': 'A0'})
<pymongo.cursor.Cursor at 0x7f9aafd64a90>
inoshare.find_one( {'id_no': 1, 'datahora': {'$lt': end, '$gte': start}, 'porta': 'A0'})
{u'_id': ObjectId('5435be9ce7b9916e02ed2cb5'),
u'datahora': datetime.datetime(2014, 9, 24, 7, 51, 5),
u'id_no': 1.0,
u'lab': u'2',
u'porta': u'A0',
u'sensor': u'1',
u'valor': u'917'}
顯然我可以成功返回結果。 也許您的數據已損壞,或者您應該發布所有代碼供我們審核
ISODate屬性的查詢條件應使用Python的datetime.datetime
對象。
也就是說,請勿使用isoformat函數將日期格式化為字符串,而應按原樣使用它們。
如果start = datetime(2014, 9, 24, 7, 51, 04)
拋出錯誤,
嘗試使用
start = datetime.datetime(2014, 9, 24, 7, 51, 04)
。
問題是末尾的“04”
start = datetime(2014, 9, 24, 7, 51, 04)
“SyntaxError:十進制整數文字中的前導零是不允許的;對八進制整數使用 0o 前綴”
如果這樣寫,問題就解決了:
start = datetime.datetime(2014, 9, 24, 7, 51, 4).
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.