Executando verificação de segurança...
3

Veja como utilizar o TTL com MongoDB e NodeJS.

Em alguns casos precisamos criar um documento temporário no nosso banco de dados MongoDB e as vezes isso pode ser mais trabalhoso do que imaginamos. Porém, hoje vou deixar aqui uma dica super rápida e que me economizou várias horas de programação.

Durante o desenvolvimento de um projeto que estamos trabalhando aqui na Za9 foi necessário criar uma tabela com alguns registros temporários para evitar consultas em uma tabela muito grande e com isso, acabar prejudicando a performance durante uma consulta.

Resolvemos criar uma tabela com os dados temporários e uma outra com os dados finais e a consulta sempre seria realizada na temporária. Mas para fazermos isso teríamos que criar uma rotina no nosso servidor para todo tia em um determinado horário apagar os dados da tabela temporária e não estávamos satisfeito com essa solução.

Então, pesquisando na internet encontramos os TTL Indexes do MongoDB são índices especiais de campo único que o MongoDB pode usar para remover documentos automaticamente de uma coleção após um determinado período de tempo ou em um horário específico. A expiração de dados é útil para certos tipos de informações, como dados de eventos gerados por máquina, logs e informações de sessão que só precisam persistir em um banco de dados por um período de tempo finito.

Como projeto estava sendo feito em NodeJS e utilizando o Mongoose a criação do nosso Model/Schema ficou da seguinte forma:

Model

const mongoose = require('mongoose')

const Schema = mongoose.Schema

const CollectionTemp = Schema({

expireDate: {

type: Date

},

}, {

timestamps: true

})

CollectionTemp.index({ "expireDate": 1 }, { expireAfterSeconds: 0 })

module.exports = mongoose.model('CollectionTemp', CollectionTemp)

Definimos o valor da propriedade 'expireAfterSeconds' para 0, ou seja, o documento será removido da collection assim que a data que foi adicionada no campo "expireDate" for ultrapassada.

Essa solução nos ajudou muito aqui e espero que te ajude também!

Valeu! 😉

Carregando publicação patrocinada...
1

Legal a ideia, dá pra usar o mongo como uma espécie de banco cache pra aplicações pequenas que não demandem muita infraestrutura, mas numa aplicação mais séria em produção eu com certeza consideraria colocar um Redis ou Memcached

1

Muito obrigado pela resposta. Concordo 100% com você, acredito que esse metodo utilizando o mongodb seria para projetos menores mesmo. Descobri essa função esses dias e achei muito legal. :D