我想过滤所有早于60秒的文档,以便可以处理它们(然后将其删除)。
我的Python代码在多台计算机上运行,因此它们的时钟可能与数据库的时钟不匹配(或彼此不匹配)。
我使用以下命令将当前时间(使用数据库时钟)更新为一个字段:
{'$currentDate': {'last_update': true}}
我想在PyMongo中执行以下操作以获取60秒之前的文档:
db.getCollection('my_collection').find({
"last_update": {
"$lt": new Date(new Date().getTime() - 60000)
}
})
我不知道如何用PyMongo编写new Date(...
部分。我尝试将其视为字符串,但这也不起作用。
此外,我不想创建带有'expireAfterSeconds'的TTL索引来自动删除文档,因为我想查找文档并对它们执行一些操作,然后再删除它们。
大多数文章都展示了如何使用Python代码(例如datetime.utcnow()
)中的时间,但这将是不准确的,因为某些机器可能很快,而另一些机器可能很慢。
目前,我们的临时解决方法是使用ntpd服务同步时间。