DBAtlas · Атлас эксплуатации баз данных

Создание TTL-индекса, изменение срока хранения и мониторинг удалений TTL

MongoDBОбслуживание

Команда

// 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.ttl

Что делает

Создаёт TTL-индекс, автоматически удаляющий документы через заданное время после значения поля даты, меняет срок через collMod без перестроения и показывает, сколько документов удалил TTL-монитор.

Когда использовать

Чтобы очищать данные с ограниченным сроком жизни, такие как сессии, журналы или временные токены, без задания удаления в приложении, и чтобы выяснить, почему растущая коллекция не уменьшается.

Внимание

TTL-монитор по умолчанию запускается каждые 60 секунд; удаление не мгновенное. Поле должно иметь тип Date (или быть массивом Date); даты в виде строк или документы без поля никогда не удаляются. Сокращение срока приводит к удалению множества документов сразу, нагрузке на запись и отставанию репликации. Удаления выполняются только на primary и пишутся в oplog.

Открыть в DBAtlas →

Связанные материалы