MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Exclusão automática de documentos de coleção do MongoDB

Um dos cenários comuns ao trabalhar com um banco de dados é remover automaticamente algumas tabelas com base no tempo. Por exemplo, você pode ter uma tabela de trabalhos para rastrear trabalhos em segundo plano em seu produto e deseja manter apenas os trabalhos da última hora. Como é normalmente implementado é que você acaba escrevendo um processo daemon que é executado periodicamente e coleta o lixo de suas tabelas. Dado que este é um processo tão comum, o pessoal do MongoDB construiu essa funcionalidade no banco de dados que pode ser aproveitada em suas implantações do MongoDB! É chamado de “índices TTL”. Veja como você pode usar índices TTL em duas etapas simples:

  1. Etapa 1:adicionar um campo de data

    Adicione um campo de data ao seu documento para indicar a idade do documento. O MongoDB usará este campo para determinar se seu documento expirou e precisa ser removido. Se você deseja manter o documento por mais tempo, basta atualizar este documento com uma data atualizada. No exemplo abaixo, adicionei um campo “creatationTime” à minha coleção de jobs:

    db.jobs.insert( {
       "name" : testjob
       "creationTime": new Date('Oct 30, 2013: 11:00:00'),
       "type": 2,
    } )
  2. Etapa 2:adicionar um índice TTL


    Adicione um índice TTL à sua coleção neste campo. Neste exemplo abaixo, usaremos um valor expireAfterSeconds de 3600. Isso expirará os trabalhos a cada hora:
    db.jobs.ensureIndex( { "creationTime": 1 }, { expireAfterSeconds: 3600 } )

    O daemon TTL é executado a cada 60 segundos, portanto, seu documento será excluído em aproximadamente 60 segundos após a expiração. Outra vantagem dos índices TTL é que eles também se comportam como índices normais – então você pode consultar no campo de data e o plano de consulta usará o índice. Para obter mais detalhes, consulte a documentação do MongoDB sobre índices TTL.