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