我想在数据库中过期数据(使用expireAfterSeconds确定),但我想使用collection.update>>数据总是实时向数据库发送数据,因此TTL必须处理更新数据..我可以这样做吗?
这是我用于在使用ttl指定时间后从mongodb删除数据的代码。
[isort]
...
known_first_party = my_module
答案 0 :(得分:0)
要创建TTL索引,请对值为日期或包含日期值的数组的字段使用db.collection.createIndex()方法和expireAfterSeconds选项。
但是,您的索引创建使用email
,我假设它不包含任何日期:
... ensureIndex({“email”:1},{expireAfterSeconds:time,unique:true})
相反,你需要使用createdAt
字段来使TTL索引工作,我假设它包含文档的创建时间:
...createIndex({ "createdAt": 1 }, { expireAfterSeconds: time })
此外,您不希望索引上有unique: true
约束。否则,数据库将不允许在同一时间插入两个文档。
有关更多示例,请参阅Expire Data from Collections by Setting TTL。
请注意ensureIndex()
是一个古老的MongoDB习语,而且是deprecated since MongoDB 3.0。请改用db.collection.createIndex()。