使用pymongo v2.6,用这些条件编写查询查询的正确方法是什么:
select * from tasks where processed = 0 AND (process_lock_date is null or process_lock_date < now - 10 minutes) order by date_added asc limit 50
基本上需要编写查询来选择50个记录,这些记录尚未被处理器拾取或尚未处理并且在10分钟前被拾取(即拾取未经处理的未完成任务的时间较长以前的处理器失败,并没有被标记为处理过程)
感谢任何帮助。谢谢。
答案 0 :(得分:1)
您需要首先导入timedelta和datetime对象以创建表示10分钟前日期时间的日期对象,然后使用该对象进行mongodb查询,如下所示:
from datetime import timedelta
date = datetime.datetime.now() - datetime.timedelta(minutes=10)
docs = db.collection.find(
{
'processed': 0,
'$or': [
{'process_lock_date': {'$lt': date}},
{'process_lock_date': null}
]
}).sort({'date_added': 1}).limit(50)
for doc in docs:
print(doc)