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.