Using MongoDB with Golang: Automatically Expiring Documents after a Specified Time Period
When storing data in a MongoDB collection, it may be desirable to set an expiration time for documents, ensuring they are automatically deleted after a predefined interval. This feature enhances data management by eliminating the need for manual deletion and preventing clutter within the database.
In Go, utilizing the mongo-go-driver, one can effortlessly set a TTL (time to live) for documents. Here's how:
1. Create an Index with ExpireAfterSeconds Option:
An index with the expireAfterSeconds option must be created on the field representing the expiration time. This specifies the duration in seconds after which documents will be eligible for deletion. For example:
<code class="go">model := mongo.IndexModel{ Keys: bson.M{"createdAt": 1}, Options: options.Index().SetExpireAfterSeconds(1), }</code>
2. Insert Documents:
Once the index is established, documents can be inserted with the desired createdAt timestamp. This timestamp serves as the reference point from which the expiration is calculated.
3. Monitor Expiries:
The mongo-go-driver does not provide immediate confirmation of document deletion. This is due to the asynchronous nature of the background task responsible for removing expired documents. MongoDB states that this task runs every 60 seconds, implying that expired documents may persist for up to 60 seconds before being removed.
Note: The expiration time specified using expireAfterSeconds is relative to the createdAt field. The document is eligible for deletion after the specified interval has elapsed since its creation. The actual deletion may occur slightly later, depending on the workload of the MongoDB instance.
The above is the detailed content of How can I automatically expire documents in MongoDB using Golang?. For more information, please follow other related articles on the PHP Chinese website!