我在Python的boolean
模型中有pending
个名为Mongoengine
的字段。我希望仅在pending=True
后1小时内删除该文档。如果我需要在1小时后无条件删除文档,我只会设置过期索引。是否有一些聪明且简单的方法来添加一些条件检查到期索引?
提前谢谢!
答案 0 :(得分:2)
从MongoDB 3.2版开始,您可以使用部分索引(与TTL索引结合)。
此索引将删除pending = true
1小时内的所有文档。如果在这个小时内文档被更新并且不再有待处理,则不会删除它。
let keys = { lastModifiedDate: -1 };
let options = {
expireAfterSeconds: 3600,
partialFilterExpression: { pending: true }
};
db.getCollection("collection").createIndex(keys, options);
(虽然这个答案可能不再与你相关,但我相信其他人会发现它在将来会有用)
答案 1 :(得分:1)
我担心不能直接在定期清理过期文档时添加一些自定义逻辑,但如docs中所述,您可以使用过期索引,并且仅在应用程序中设置索引字段{ {1}} - 由于未删除没有过期索引字段的文档,这应该有效,尽管不完全符合您的要求。