Cette réponse est obsolète : les dropDups
L'option a été supprimée dans MongoDB 3.0, donc une approche différente sera nécessaire dans la plupart des cas. Par exemple, vous pouvez utiliser l'agrégation comme suggéré sur :Documents en double MongoDB même après avoir ajouté une clé unique.
Si vous êtes certain que le source_references.key
identifie les enregistrements en double, vous pouvez garantir un index unique avec le dropDups:true
option de création d'index dans MongoDB 2.6 ou version antérieure :
db.things.ensureIndex({'source_references.key' : 1}, {unique : true, dropDups : true})
Cela conservera le premier document unique pour chaque source_references.key
et supprimez tous les documents suivants qui entraîneraient autrement une violation de clé en double.
Remarque importante :Tout document manquant de source_references.key
le champ sera considéré comme ayant un null valeur, de sorte que les documents suivants manquant le champ clé seront supprimés. Vous pouvez ajouter le sparse:true
option de création d'index pour que l'index ne s'applique qu'aux documents avec un source_references.key
champ.
Précaution évidente :Effectuez une sauvegarde de votre base de données et essayez-la d'abord dans un environnement intermédiaire si vous craignez une perte de données involontaire.