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

mongo 3 duplicatas no índice exclusivo - dropDups


Sim dropDupes agora está obsoleto desde a versão 2.7.5 porque não era possível prever corretamente qual documento seria excluído no processo.

Normalmente, você tem 2 opções:

  1. Use uma nova coleção:
    • Crie uma nova coleção,
    • Crie o índice exclusivo nesta nova coleção,
    • Execute um lote para copiar todos os documentos da coleção antiga para a nova e certifique-se de ignorar o erro de chave duplicada durante o processo.

  2. Lide com ele em sua própria coleção manualmente:
    • certifique-se de não inserir mais documentos duplicados em seu código,
    • execute um lote em sua coleção para excluir as duplicatas (e certifique-se de manter a boa se não forem completamente idênticas)
    • adicione o índice exclusivo.

Para seu caso específico, recomendo a primeira opção mas com um truque:
  • Crie uma nova coleção com índice exclusivo,
  • Atualize seu código para inserir documentos em ambos tabelas,
  • Execute um lote para copiar todos os documentos da coleção antiga para a nova (ignore o erro de chave duplicada)
  • renomeie a nova coleção para corresponder ao nome antigo.
  • atualize novamente seu código para que agora você escreva apenas na coleção "antiga"