Créer un index TTL, modifier son expiration et surveiller les suppressions TTL
MongoDBMaintenanceCommande
// 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.ttlCe que fait la commande
Crée un index TTL qui supprime automatiquement les documents un temps donné après un champ de date, modifie l'expiration avec collMod sans reconstruction, et indique combien de documents le TTL monitor a supprimés.
Quand l'utiliser
Pour nettoyer des données à durée limitée comme les sessions, les logs ou les jetons temporaires sans écrire de job de suppression dans l'application, et pour comprendre pourquoi une collection en croissance ne diminue pas.
Attention
Le TTL monitor s'exécute toutes les 60 secondes par défaut ; la suppression n'est pas instantanée. Le champ doit être de type Date (ou un tableau de Dates) ; les dates en chaîne ou les documents sans le champ ne sont jamais supprimés. Raccourcir l'expiration entraîne la suppression d'un grand nombre de documents d'un coup, une charge d'écriture et un retard de réplication. Les suppressions n'ont lieu que sur le primaire et sont écrites dans l'oplog.