MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

mongo 3 duplicati su un indice univoco - dropDups

dropDupes è ora deprecato dalla versione 2.7.5 perché non era possibile prevedere correttamente quale documento sarebbe stato eliminato durante il processo.

In genere, hai 2 opzioni:

  1. Usa una nuova collezione :

    • Crea una nuova collezione,
    • Crea l'indice univoco su questa nuova raccolta,
    • Esegui un batch per copiare tutti i documenti dalla vecchia raccolta a quella nuova e assicurati di ignorare l'errore di chiave duplicata durante il processo.
  2. Gestiscilo manualmente nella tua collezione :

    • assicurati di non inserire più documenti duplicati nel tuo codice
    • esegui un batch sulla tua raccolta per eliminare i duplicati (e assicurati di conservare quello valido se non sono completamente identici),
    • quindi aggiungi l'indice univoco.

Per il tuo caso particolare, consiglierei la prima opzione ma con un trucco :

  • Crea una nuova collezione con indice univoco,
  • Aggiorna il tuo codice in modo da inserire i documenti in entrambi tabelle,
  • Esegui un batch per copiare tutti i documenti dalla vecchia raccolta a quella nuova (ignora errore chiave duplicata),
  • rinomina la nuova raccolta in modo che corrisponda al vecchio nome.
  • aggiorna nuovamente il tuo codice in modo da scrivere solo nella "vecchia" raccolta