Recientemente necesité eliminar algunos documentos que guardé en MongoDB después de un tiempo. Puedo pensar en algunos ejemplos de por qué querríamos eliminar datos después de un tiempo: registros / eventos claves api / tokens de acceso usuarios no activos etc. Podríamos hacerlo ejecutando un cronjob que elimine los datos, eliminar los datos cada vez que insertamos datos nuevos o cualquier otra solución. Afortunadamente para mí, mi esposa me dijo que MongoDB ya tiene incorporado ese mecanismo. índice TTL Los índices TTL (Time-To-Live) son índices especiales de un solo campo que MongoDB puede usar para eliminar automáticamente documentos de una colección después de una cierta cantidad de tiempo. Un subproceso en segundo plano en MongoDB lee los valores en el índice y elimina los documentos caducados de la colección (generalmente cada minuto). Por ejemplo, para crear un índice TTL en el campo de la colección, use la siguiente operación en el shell mongo: lastModifiedDate eventlog db.eventlog.createIndex( { : }, { : } ) "lastModifiedDate" 1 expireAfterSeconds 3600 El campo indexado debe ser del o una matriz de fechas BSON tipo de fecha BSON Si el campo indexado en un documento no es una fecha o una matriz que contiene valores de fecha, el documento no caducará. Si un documento no contiene el campo indexado, el documento no caducará. Eliminación condicional A partir de MongoDB 3.2, una colección se puede indexar parcialmente usando una expresión de filtro específica, . El índice TTL también se puede utilizar con índices parciales. partialFilterExpression Por ejemplo: Eliminar documentos que se crearon hace 1 hora si igual a state TMP db.eventlog.createIndex( { : }, { : , : { : } } ); created_at 1 expireAfterSeconds 3600 partialFilterExpression state 'TMP' Eliminar documentos que se crearon hace 1 día si es mas bajo que count 5 db.eventlog.createIndex( { : }, { : , : { : { : } } } ); created_at 1 expireAfterSeconds 86400 partialFilterExpression count $lt 5 Información adicional sobre índices parciales ejemplo del mundo real Recientemente terminé de desarrollar , que es una herramienta gratuita que te ayuda a monitorear el tamaño de tu paquete de aplicaciones. BundleMon Uno de los componentes de BundleMon es un servicio que guarda informes históricos para comparar el tamaño del paquete entre sucursales. Entonces, cuando abre un PR, BundleMon guarda un registro con el informe de tamaño de paquete actual. No es necesario guardar el informe durante más de 30 días, así que solo agregué un índice TTL: db.reports.createIndex( { : }, { : , : { : { : } } } ); creationDate 1 expireAfterSeconds 2592000 partialFilterExpression prNumber $exists true También publicado en https://dev.to/lironer/delete-expired-documents-automatically-with-mongodb-ttl-index-l44