Usando documentos de expiração do MongoDB após um número especificado de segundos em movimento
Usando índices TTL, o MongoDB permite que você expire documentos automaticamente após um período especificado duração. Este artigo demonstra como fazer isso em Go usando o mongo-go-driver oficial.
Seguindo a documentação do MongoDB, o código mostra como:
No entanto, o exemplo fornecido está funcionando corretamente e o problema não está relacionado ao código.
Compreendendo o comportamento do índice TTL
O parâmetro expireAfterSeconds especifica a duração após o campo criadoAt quando o documento deve ser considerado expirado. No entanto, a exclusão de documentos expirados não é imediata.
De acordo com a documentação do MongoDB:
"O índice TTL não garante que os dados expirados serão excluídos imediatamente após a expiração. Pode haver um atraso entre o momento em que um documento expira e o momento em que o MongoDB remove o documento do banco de dados."
Tarefa em segundo plano para exclusão
O MongoDB tem uma tarefa em segundo plano que remove documentos expirados a cada 60 segundos. Portanto, os documentos poderão permanecer no acervo por até 60 segundos após expirarem. Além disso, se o banco de dados estiver sob carga pesada, pode levar mais tempo para que todos os documentos expirados sejam excluídos.
Resolução
No seu snippet de código, você espera alguma documentos a serem excluídos após 5 segundos (com base na opção expireAfterSeconds), mas aguarde apenas alguns segundos após a inserção para verificação. Para testar corretamente a funcionalidade, você deve permitir tempo suficiente (vários minutos no mínimo) para que a tarefa em segundo plano seja executada e exclua os documentos expirados.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3