簡體   English   中英

如何使用 pymongo 在 mongodb 中查詢日期?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM