我一直在考虑使用TTL中的构建功能,但动态更改到期日期并不容易.由于mongodb正在使用后台任务清除数据.根据"> certain_date"编码我自己的清除功能是否有任何缺点,并且每天运行一次?这样,我可以动态更改TTL值,并且此日期字段不必是单个索引.我可以重用此字段作为复杂索引的一部分,以最小化索引数.
小智 19
这些模式是独家的.
如果您希望所有文档在创建后3个月过期,请通过创建索引来使用第一个模式,如下所示:
db.events.ensureIndex({ "createdAt": 1 }, { expireAfterSeconds: 7776000 })
Run Code Online (Sandbox Code Playgroud)
如果您以后决定将到期时间更改为"4个月",则只需使用collMod命令更新expireAfterSeconds值:
db.runCommand({"collMod" : "events" , "index" : { "keyPattern" : {"createdAt" : 1 } , "expireAfterSeconds" : 10368000 } })
Run Code Online (Sandbox Code Playgroud)
如果您希望每个文档都有自己的到期日期,请将特定日期保存在"expiresAt"之类的字段中,然后使用以下内容索引您的集合:
db.events.ensureIndex({ "expiresAt": 1 }, { expireAfterSeconds: 0 })
Run Code Online (Sandbox Code Playgroud)
我一直在考虑使用TTL中的构建功能,但动态更改到期日期并不容易
那很奇怪.为什么会出现问题?如果您的文档有字段Expires
,则可以随时更新该字段以动态延长或缩短文档的使用寿命.
根据"> certain_date"编码我自己的清除功能是否有任何缺点,并且每天运行一次?
最小化索引的数量是一件好事,但问题是它是否真的值得付出努力.只有你能回答这个问题.我的建议是:从已经存在的东西开始,如果有可能的话,并且只在你真的需要的时候提出更好的东西.
归档时间: |
|
查看次数: |
8194 次 |
最近记录: |