Crear un índice TTL, cambiar su caducidad y monitorear los borrados TTL
MongoDBMantenimientoComando
// Automatically delete documents lastSeen + 3600 s later:
db.oturum.createIndex({ lastSeen: 1 }, { expireAfterSeconds: 3600, name: "ttl_lastSeen" })
// Change the expiry without rebuilding the index:
db.runCommand({ collMod: "oturum", index: { name: "ttl_lastSeen", expireAfterSeconds: 7200 } })
// TTL indexes on the collection and their expiry:
db.oturum.getIndexes().filter(i => i.expireAfterSeconds !== undefined)
// TTL monitor statistics (deleted documents, passes):
db.serverStatus().metrics.ttlQué hace
Crea un índice TTL que borra automáticamente los documentos un tiempo fijado después de un campo de fecha, cambia la caducidad con collMod sin reconstrucción y muestra cuántos documentos ha borrado el TTL monitor.
Cuándo usarlo
Para limpiar datos con plazo como sesiones, logs o tokens temporales sin escribir un job de borrado en la aplicación, y para investigar por qué una colección en crecimiento no se reduce.
Precaución
El TTL monitor se ejecuta cada 60 segundos por defecto; el borrado no es instantáneo. El campo debe ser de tipo Date (o un array de Date); las fechas en string o los documentos sin el campo nunca se borran. Acortar la caducidad provoca que se borren muchos documentos a la vez, carga de escritura y retraso de replicación. Los borrados solo ocurren en el primario y se escriben en el oplog.