Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/
Manual de base de datos
/

Configurar la eliminación automática para las colecciones de series de tiempo (TTL)

Cuando creas un recopilación de series de tiempo, puede configurar la eliminación automática de documentos con más de una cantidad específica de segundos mediante el uso de expireAfterSeconds parameter:

db.createCollection(
"weather24h",
{
timeseries: {
timeField: "timestamp",
metaField: "metadata",
granularity: "hours"
},
expireAfterSeconds: 86400
}
)

El umbral de caducidad es el valor del campo timeField más el número de segundos especificado. Considera el siguiente documento en la colección weather24h:

{
"metadata": {"sensorId": 5578, "type": "temperature"},
"timestamp": ISODate("2021-05-18T10:00:00.000Z"),
"temp": 12
}

El documento caducaría de la base de datos a las "2021-05-19T10:00:00.000Z". Una vez que todos los documentos de un bucket hayan caducado, la tarea en segundo plano que remueve los buckets caducados remueve el bucket en la siguiente ejecución. Consulta Momento de las operaciones de borrar para obtener más información.

Para habilitar la eliminación automática de documentos de una colección de series de tiempo existente, emita el siguiente collMod comando:

db.runCommand({
collMod: "weather24h",
expireAfterSeconds: 604801
})

Para cambiar el valor del parámetro expireAfterSeconds, ejecute el siguiente comando collMod:

db.runCommand({
collMod: "weather24h",
expireAfterSeconds: 604801
})

Para recuperar el valor actual de,expireAfterSeconds utilice el listCollections comando:

db.runCommand( { listCollections: 1 } )

El documento de resultado contiene un documento para la colección de series de tiempo que contiene el campo options.expireAfterSeconds.

{
cursor: {
id: <number>,
ns: 'test.$cmd.listCollections',
firstBatch: [
{
name: <string>,
type: 'timeseries',
options: {
expireAfterSeconds: <number>,
timeseries: { ... }
},
...
},
...
]
}
}

Para desactivar la eliminación automática, utiliza el comando collMod para configurar expireAfterSeconds en off:

db.runCommand({
collMod: "weather24h",
expireAfterSeconds: "off"
})

MongoDB no garantiza que los datos caducados se borrarán inmediatamente después de su vencimiento. Una vez que todos los documentos en un bucket han expirado, la tarea en segundo plano que elimina buckets expirados elimina el bucket durante la siguiente ejecución. El lapso máximo de tiempo que se permite que una única cubeta cubra está controlado por el granularity de la colección de series de tiempo:

granularity
Lapso de tiempo cubierto

"seconds" (por defecto)

una hora

"minutes"

24 horas

"hours"

30 días

La tarea en segundo plano que elimina los buckets caducados se ejecuta cada 60 segundos. Por lo tanto, los documentos pueden permanecer en una colección durante el periodo comprendido entre la caducidad del documento, la caducidad de todos los demás documentos del bucket y la ejecución de la tarea en segundo plano.

Debido a que la duración de la operación de eliminación depende de la carga de trabajo de su instancia de mongod, los datos vencidos pueden existir durante algún tiempo más allá del período de 60 segundos entre ejecuciones de la tarea en segundo plano.

Volver

Listar las colecciones de series temporales en una base de datos

En esta página