如何在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})

对我而言,如果日期未转换为 字符串,则会显示错误消息“解析器必须是字符串或字符流,而不是日期”