Skip to content

Latest commit

 

History

History
56 lines (32 loc) · 5.76 KB

caducar-datos-de-colecciones-configurando-ttl.md

File metadata and controls

56 lines (32 loc) · 5.76 KB

Caducar datos de colecciones configurando TTL

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 mongodque lee los valores de fecha en el índice y elimina los documentos caducados de la colección.

Procedimientos

Para crear un índice TTL , use el db.collection.createIndex()método con la expireAfterSecondsopció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 expireAfterSecondsde un índice TTL existente usando el collModcomando.

Caducar documentos después de un número específico de segundos

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 expireAfterSecondscampo . 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_eventscolección createdAty especifica el expireAfterSecondsvalor de 3600para 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_eventscolección, configure el createdAtcampo 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 createdAtvalor 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.

Caducar documentos a una hora específica

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 expireAfterSecondsvalor 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_eventscolección expireAty especifica el expireAfterSecondsvalor de 0:

db.log_events.createIndex( { "expireAt": 1 }, { expireAfterSeconds: 0 } )

Para cada documento, establezca el valor de expireAtpara 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 expireAtvalor 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 expireAtvalor especificado .