如何在pymongo中使用isodate查询
how to query using isodate in pymongo
我有一个 mongodb 查询可以在 mongo shell:
db.collection.find({ created_at: { $gte : ISODate("2015-03-01T00:00:00.000Z"), $lt : ISODate("2015-03-30T00:00:00.00Z") } })
我正在尝试以下 pymongo:
test_range = agents.coll.find({ "created_at" : { "$gte" : "ISODate('2015-03-01T00:00:00.000Z')", "$lt" : "ISODate('2015-03-30T00:00:00.00Z')" } })
我得到 SyntaxError: invalid syntax
在 pymongo 查询中处理 ISODate 的正确方法是什么?
日期在 MongoDB 中存储为 ISODates,但是,当您使用 Pymongo 时,日期会转换为 Python Datetime 对象。因此,使用 Pymongo,您的查询应如下所示:
test_range = agents.coll.find({ "created_at": {"$gte" : datetime(2015, 3, 1), "$lt": datetime(2015, 3, 30)}})
使用isoformat()
。示例 dt = datetime.datetime.now().isoformat()
.
下面的代码对我来说工作正常
db.yourcollection.find({"createdAt":{"$gte":dateutil.parser.parse(str(date_time_str)),"$lt":dateutil.parser.parse(str(currentdate))},\
"status":"completed"},{"_id":0})
对我而言,如果日期未转换为 字符串,则会显示错误消息“解析器必须是字符串或字符流,而不是日期”
我有一个 mongodb 查询可以在 mongo shell:
db.collection.find({ created_at: { $gte : ISODate("2015-03-01T00:00:00.000Z"), $lt : ISODate("2015-03-30T00:00:00.00Z") } })
我正在尝试以下 pymongo:
test_range = agents.coll.find({ "created_at" : { "$gte" : "ISODate('2015-03-01T00:00:00.000Z')", "$lt" : "ISODate('2015-03-30T00:00:00.00Z')" } })
我得到 SyntaxError: invalid syntax
在 pymongo 查询中处理 ISODate 的正确方法是什么?
日期在 MongoDB 中存储为 ISODates,但是,当您使用 Pymongo 时,日期会转换为 Python Datetime 对象。因此,使用 Pymongo,您的查询应如下所示:
test_range = agents.coll.find({ "created_at": {"$gte" : datetime(2015, 3, 1), "$lt": datetime(2015, 3, 30)}})
使用isoformat()
。示例 dt = datetime.datetime.now().isoformat()
.
下面的代码对我来说工作正常
db.yourcollection.find({"createdAt":{"$gte":dateutil.parser.parse(str(date_time_str)),"$lt":dateutil.parser.parse(str(currentdate))},\
"status":"completed"},{"_id":0})
对我而言,如果日期未转换为 字符串,则会显示错误消息“解析器必须是字符串或字符流,而不是日期”