DBAtlas · Atlas de operações de banco de dados

Criar um índice TTL, alterar sua expiração e monitorar os deletes do TTL

MongoDBManutenção

Comando

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

O que faz

Cria um índice TTL que apaga automaticamente os documentos um tempo definido após um campo de data, altera a expiração com collMod sem rebuild e mostra quantos documentos o TTL monitor apagou.

Quando usar

Para limpar dados com prazo, como sessões, logs ou tokens temporários, sem escrever um job de delete na aplicação, e para investigar por que uma collection em crescimento não está diminuindo.

Atenção

O TTL monitor roda a cada 60 segundos por padrão; a exclusão não é instantânea. O campo precisa ser do tipo Date (ou um array de Dates); datas em string ou documentos sem o campo nunca são apagados. Encurtar a expiração faz muitos documentos serem apagados de uma vez, gerando carga de escrita e lag de replicação. Os deletes acontecem apenas no primário e são gravados no oplog.

Abrir no DBAtlas →

Relacionados