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

Come rimuovere i duplicati in base a una chiave in Mongodb?

Questa risposta è obsoleta : i dropDups opzione è stata rimossa in MongoDB 3.0, quindi nella maggior parte dei casi sarà richiesto un approccio diverso. Ad esempio, potresti utilizzare l'aggregazione come suggerito su:MongoDB duplica i documenti anche dopo aver aggiunto una chiave univoca.

Se sei certo che il source_references.key identifica record duplicati, puoi garantire un indice univoco con dropDups:true opzione di creazione dell'indice in MongoDB 2.6 o precedente:

db.things.ensureIndex({'source_references.key' : 1}, {unique : true, dropDups : true})

Ciò manterrà il primo documento univoco per ogni source_references.key valore ed elimina tutti i documenti successivi che altrimenti causerebbero una violazione della chiave duplicata.

Nota importante :Tutti i documenti privi di source_references.key campo sarà considerato come null valore, quindi i documenti successivi privi del campo chiave verranno eliminati. Puoi aggiungere sparse:true opzione di creazione dell'indice in modo che l'indice si applichi solo ai documenti con un source_references.key campo.

Ovvia cautela :fai un backup del tuo database e provalo prima in un ambiente di gestione temporanea se sei preoccupato per la perdita di dati involontaria.