MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment supprimer les doublons basés sur une clé dans Mongodb ?

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.