我在 mongodb 中有一个文档集合,其中expireAfterSeconds
在日期类型索引上设置的属性。
为了便于讨论,这些文件被设置为一小时后过期。
当我更新此集合中的文档时,会发生以下哪一项情况?
a)该文件将在一小时后过期original创建时间。
b)该文件将在一小时后过期update time.
c)该文档将在一小时后过期索引变量是时候了,无论那是什么。
d)以上都不是
我认为这是c,但找不到参考文献来证实这一点。我对么?这是在哪里记录的?
[edit]:需要澄清的是,情况是我正在存储密码重置代码(应该会过期),并且我希望在请求新代码时旧代码停止工作。但这并不是很相关,因为我可以通过简单地删除旧事务来确保我想要的行为始终得到尊重。这个问题不是关于我当前的问题,而是关于 Mongo 的行为。
正确答案是c)
expireAfterSeconds 属性始终需要包含 BSON 日期的字段上的索引,因为该日期字段的内容用于选择要删除的条目。
当您想要更新文档以重置生存时间时,还要将索引日期字段更新为当前时间。
当您希望更新不影响 TTL 时,只需不要更新日期即可。
但是,请记住,expireAfterSeconds 并不能保证立即删除文档。删除是由每分钟运行的后台作业完成的。该作业优先级较低,当当前负载较高时,MongoDB 可以推迟该作业。因此,当您的用例必须精确到秒地遵守过期时间时,您应该在应用程序级别添加额外的检查。
此功能记录在此处:http://docs.mongodb.org/manual/tutorial/expire-data/ http://docs.mongodb.org/manual/tutorial/expire-data/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)