繁体   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