Este documento proporciona una introducción a la función de recopilación TTL o " tiempo de vida " de MongoDB . Las colecciones TTL hacen posible almacenar datos en MongoDB y hacer que eliminen automáticamente los datos después de un número específico de segundos o en una hora de reloj específica.mongod
La caducidad de los datos es útil para algunas clases de información, incluidos los datos de eventos generados por la máquina, los registros y la información de la sesión que solo deben persistir durante un período de tiempo limitado.
Una propiedad de índice TTL especial admite la implementación de colecciones TTL. La función TTL se basa en un hilo de fondo mongod
que lee los valores de fecha en el índice y elimina los documentos caducados de la colección.
Para crear un índice TTL , use el db.collection.createIndex()
método con la expireAfterSeconds
opción en un campo cuyo valor sea una fecha o una matriz que contenga valores de fecha .NOTA
El índice TTL es un índice de campo único. Los índices compuestos no admiten la propiedad TTL. Para obtener más información sobre los índices TTL, consulte Índices TTL .
Puede modificar el expireAfterSeconds
de un índice TTL existente usando el collMod
comando.
Para caducar los datos después de que haya pasado un número específico de segundos desde el campo indexado, cree un índice TTL en un campo que contenga valores de tipo de fecha BSON o una matriz de objetos con tipo de fecha BSON y especifique un valor positivo distinto de cero en el expireAfterSeconds
campo . Un documento caducará cuando expireAfterSeconds
haya transcurrido el número de segundos en el campo desde el tiempo especificado en su campo indexado. [ 1 ]
Por ejemplo, la siguiente operación crea un índice en el campo de la log_events
colección createdAt
y especifica el expireAfterSeconds
valor de 3600
para establecer el tiempo de vencimiento en una hora después del tiempo especificado por createdAt
.
db.log_events.createIndex( { "createdAt": 1 }, { expireAfterSeconds: 3600 } )
Al agregar documentos a la log_events
colección, configure el createdAt
campo a la hora actual:
db.log_events.insert( { "createdAt": new Date(), "logEvent": 2, "logMessage": "Success!"} )
MongoDB eliminará automáticamente los documentos de la log_events
colección cuando el createdAt
valor del documento [ 1 ] sea más antiguo que el número de segundos especificado en expireAfterSeconds
.
[ 1 ] | ( 1 , 2 ) Si el campo contiene una matriz de objetos con tipo de fecha BSON, los datos caducan si al menos uno de los objetos con tipo de fecha BSON es más antiguo que el número de segundos especificado en expireAfterSeconds . |
---|
Para caducar documentos a una hora específica, comience creando un índice TTL en un campo que contenga valores de tipo de fecha BSON o una matriz de objetos con tipo de fecha BSON y especifique un expireAfterSeconds
valor de 0
. Para cada documento de la colección, establezca el campo de fecha indexada en un valor correspondiente a la hora en que el documento debe caducar. Si el campo de fecha indexada contiene una fecha en el pasado, MongoDB considera que el documento ha caducado.
Por ejemplo, la siguiente operación crea un índice en el campo de la log_events
colección expireAt
y especifica el expireAfterSeconds
valor de 0
:
db.log_events.createIndex( { "expireAt": 1 }, { expireAfterSeconds: 0 } )
Para cada documento, establezca el valor de expireAt
para que corresponda a la hora en que el documento debe caducar. Por ejemplo, la siguiente insert()
operación agrega un documento que debe caducar en July 22, 2013 14:00:00
.
db.log_events.insert( { "expireAt": new Date('July 22, 2013 14:00:00'), "logEvent": 2, "logMessage": "Success!"} )
MongoDB eliminará automáticamente los documentos de la log_events
colección cuando el expireAt
valor de los documentos sea más antiguo que el número de segundos especificado en expireAfterSeconds
, es decir, 0
segundos más antiguos en este caso. Como tal, los datos caducan en el expireAt
valor especificado .