gpt4 book ai didi

mongodb - mongodb的ttl集合有什么好处? vs 从管家那里清除数据?

转载 作者:IT老高 更新时间:2023-10-28 13:11:21 25 4
gpt4 key购买 nike

我一直在考虑使用内置 TTL 功能,但是动态更改过期日期并不容易。由于 mongodb 正在使用后台任务清除数据。仅根据“> certain_date”编写我自己的清除功能并每天运行一次是否有任何缺点?这样,我可以动态更改 TTL 值,并且此日期字段不必是单个索引。我可以将此字段作为复杂索引的一部分重用,以最大限度地减少索引数量。

最佳答案

有两种方法可以设置 expiration date on a TTL collection :

  1. 在全局级别,创建索引时
  2. 每个文档,作为文档中的一个字段

这些模式是专有的。

全局到期

如果您希望所有文档在创建后 3 个月过期,请使用第一种模式,通过创建如下索引:

db.events.ensureIndex({ "createdAt": 1 }, { expireAfterSeconds: 7776000 })

如果您稍后决定将到期时间更改为“4 个月”,您只需使用 collMod 更新 expireAfterSeconds 值。命令:

db.runCommand({"collMod" : "events" , "index" : { "keyPattern" : {"createdAt" : 1 } , "expireAfterSeconds" : 10368000 } })

每个文档的有效期

如果您想让每个文档都有自己的到期日期,请将特定日期保存在“expiresAt”之类的字段中,然后使用以下命令索引您的集合:

db.events.ensureIndex({ "expiresAt": 1 }, { expireAfterSeconds: 0 })

关于mongodb - mongodb的ttl集合有什么好处? vs 从管家那里清除数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19106684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com