我在 mongodb 中有一组文档,在日期类型索引上设置了 expireAfterSeconds 属性。

为便于论证,文档设置为一小时后过期。

当我更新此集合中的文档时,会发生以下哪一种情况?

a) 文档将在原始创建时间后一小时到期。

b) 文档将在更新时间后一小时到期。

c) 文档将在索引变量的时间后一小时到期,无论是什么。

d) 以上都不是

我认为它是 c ,但找不到引用来确认它。我对么?这是在哪里记录的?

[编辑]: 澄清一下,情况是我正在存储密码重置代码(应该会过期。),如果需要新代码,我希望旧代码停止工作。不过,这不是很相关,因为我可以通过简单地删除旧事务来确保始终遵守我想要的行为。这个问题不是关于我当前的问题,而是关于 Mongo 的行为。

最佳答案

正确答案是 c)

expireAfterSeconds 属性始终需要包含 BSON 日期的字段的索引,因为此日期字段的内容用于选择要删除的条目。

当您想要更新文档以重置生存时间时,还将索引日期字段更新为当前时间。

如果您希望更新不影响 TTL,请不要更新日期。

但是,请记住 expireAfterSeconds 不能保证立即删除文档。删除是由每分钟运行一次的后台作业完成的。该作业是低优先级的,当当前负载很高时,可以由 MongoDB 推迟。因此,当您的用例很重要时,到期时间精确到秒,您应该在应用程序级别添加额外的检查。

此功能记录在此处:http://docs.mongodb.org/manual/tutorial/expire-data/

关于mongodb - mongodb 文档更新后什么时候过期?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12351785/

10-17 03:10