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

doublons mongo 3 sur index unique - dropDups

Oui dropDupes est désormais obsolète depuis la version 2.7.5 car il n'était pas possible de prédire correctement quel document serait supprimé au cours du processus.

Typiquement, vous avez 2 options :

  1. Utiliser une nouvelle collection :

    • Créer une nouvelle collection,
    • Créer l'index unique sur cette nouvelle collection,
    • Exécutez un lot pour copier tous les documents de l'ancienne collection vers la nouvelle et assurez-vous d'ignorer l'erreur de clé en double pendant le processus.
  2. Traitez-le manuellement dans votre propre collection :

    • assurez-vous de ne pas insérer plus de documents en double dans votre code,
    • lancez un batch sur votre collection pour supprimer les doublons (et assurez-vous de garder le bon s'ils ne sont pas complètement identiques),
    • ajoutez ensuite l'index unique.

Pour votre cas particulier, je recommanderais la première option mais avec une astuce :

  • Créer une nouvelle collection avec un index unique,
  • Mettez à jour votre code pour insérer maintenant des documents dans les deux tableaux,
  • Exécuter un lot pour copier tous les documents de l'ancienne collection vers la nouvelle (ignorer l'erreur de clé dupliquée),
  • renommez la nouvelle collection pour qu'elle corresponde à l'ancien nom.
  • re-mettez à jour votre code pour n'écrire plus que dans l'"ancienne" collection