Trabalhar com limpeza e expurgo de dados é sempre uma tarefa rotineira de quem utiliza diariamente banco de dados, seja ele qual for. O código abaixo mostra como remover registros duplicados do MongoDB baseado em uma chave (campo).
Primeiro método – Criando um índice único:
db.minhacollection.ensureIndex({'source_references.key' : 1}, {unique : true, dropDups : true})
A opção dropDups foi removida no MongoDB 3.0, portanto será necessária uma abordagem diferente. Por exemplo, você poderia usar agregação para conseguir este feito. Quaisquer documentos que estejam faltando no campo source_references.key serão considerados como tendo um valor nulo, portanto, os documentos subseqüentes que não tiverem o campo-chave serão excluídos.
Segundo método – Fazendo um loop na coleção toda e removendo linhas duplicadas baseada em uma chave:
db.minhacollection.find({}, {myCustomKey:1}).sort({_id:1}).forEach(function(doc){ db.minhacollection.remove({_id:{$gt:doc._id}, myCustomKey:doc.myCustomKey}); });
Indexar sua customKey antes de executar isso para aumentar a velocidade.
Cuidado óbvio: faça um backup do banco de dados e tente isso primeiro em um ambiente de preparo se você estiver preocupado com a perda de dados não intencional.
Um grande abraço a todos!