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

Como remover duplicatas com base em uma chave no Mongodb?


Esta resposta está obsoleta : o dropDups A opção foi removida no MongoDB 3.0, portanto, uma abordagem diferente será necessária na maioria dos casos. Por exemplo, você pode usar a agregação conforme sugerido em:Documentos duplicados do MongoDB mesmo depois de adicionar uma chave exclusiva.

Se você tiver certeza de que o source_references.key identifica registros duplicados, você pode garantir um índice exclusivo com o dropDups:true opção de criação de índice no MongoDB 2.6 ou anterior:
db.things.ensureIndex({'source_references.key' : 1}, {unique : true, dropDups : true})

Isso manterá o primeiro documento exclusivo para cada source_references.key valor e elimine quaisquer documentos subsequentes que, de outra forma, causariam uma violação de chave duplicada.

Observação importante :Quaisquer documentos sem o source_references.key campo será considerado como null valor, de modo que os documentos subsequentes que não contenham o campo-chave serão excluídos. Você pode adicionar o sparse:true opção de criação de índice para que o índice se aplique apenas a documentos com um source_references.key campo.

Cuidado óbvio :Faça um backup do seu banco de dados e tente primeiro em um ambiente de teste se estiver preocupado com a perda de dados não intencional.