I couldn\'t find in any of the Spring-Data documents, what is the way to assign expiration time to a document in MongoDB?
Thanks, but does the whole document is expired and deleted or just the field?
According to the MongoDB Documentation https://docs.mongodb.com/manual/core/index-ttl/ The TTL index is used to remove documents from a collection.
So, the entire document will be deleted and not uniquely the field indexed.
Nb : The index has to be positioned on a Date Field, else the TTL will not be apply
regards
You can do it using @Indexed
annotation's expireAfterSeconds
attribute over a field whose type is Date
.Roughly:
@Document
public class SomeEntity {
String id;
@Field
@Indexed(name="someDateFieldIndex", expireAfterSeconds=3600)
Date someDateField;
// rest of code here
}
Or by manipulating a MongoTemplate
:
mongoTemplate
.indexOps(SomeEntity.class)
.ensureIndex(new Index().on("someDateField", Sort.Direction.ASC).expire(3600));