When will a mongodb document expire after it is updated?

烂漫一生 提交于 2019-12-31 22:31:40

问题


I have a collections of documents in mongodb, with the expireAfterSeconds property set on a date-type index.

For the sake of argument, the documents are set to expire after one hour.

When I update a document in this collection, which one of the following will happen?

a) The document will expire one hour after the original creation time.

b) The document will expire one hour after the update time.

c) The document will expire one hour after the indexed variable's time, whatever that may be.

d) None of the above

I think that it's c, but cannot find the reference to confirm it. Am I correct? Where is this documented?

[edit]: To clarify, the situation is that I'm storing password reset codes (that should expire.) and I want the old codes to stop working if a new code is requested. It's not very relevant though, since I can ensure the behaviour I want is always respected by simply deleting the old transaction. This question is not about my current problem, but about Mongo's behaviour.


回答1:


The correct answer is c)

The expireAfterSeconds property always requires an index on a field which contains a BSON date, because the content of this date field is used to select entries for removal.

When you want an update of a document to reset the time-to-live, also update the indexed date field to the current time.

When you want an update to not affect the TTL, just don't update the date.

However, keep in mind that expireAfterSeconds doesn't guarantee immediate deletion of the document. The deletions are done by a background job which runs every minute. This job is low-priority and can be postponed by MongoDB when the current load is high. So when it's important for your use-case that the expire times are respected accurately to the second, you should add an additional check on the application level.

This feature is documented here: http://docs.mongodb.org/manual/tutorial/expire-data/




回答2:


If you don't want to rely on mongo demon process for expiring the collection, then better to create an additional createdOn field on collection and compare it with the current timestamp to decide whether to use that document or not.



来源:https://stackoverflow.com/questions/12351785/when-will-a-mongodb-document-expire-after-it-is-updated

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!