Dit antwoord is verouderd : de dropDups
optie is verwijderd in MongoDB 3.0, dus in de meeste gevallen is een andere aanpak vereist. U kunt bijvoorbeeld aggregatie gebruiken zoals voorgesteld op:MongoDB dubbele documenten, zelfs na het toevoegen van een unieke sleutel.
Als u zeker weet dat de source_references.key
identificeert dubbele records, kunt u zorgen voor een unieke index met de dropDups:true
optie voor het maken van indexen in MongoDB 2.6 of ouder:
db.things.ensureIndex({'source_references.key' : 1}, {unique : true, dropDups : true})
Hierdoor blijft het eerste unieke document voor elke source_references.key
waarde, en laat alle volgende documenten vallen die anders een dubbele sleutelovertreding zouden veroorzaken.
Belangrijke opmerking :Alle documenten die de source_references.key
. missen veld wordt beschouwd als een null waarde, dus volgende documenten die het sleutelveld missen, worden verwijderd. U kunt de sparse:true
. toevoegen index aanmaakoptie zodat de index alleen van toepassing is op documenten met een source_references.key
veld.
Voor de hand liggende waarschuwing :Maak een back-up van uw database en probeer dit eerst in een testomgeving als u zich zorgen maakt over onbedoeld gegevensverlies.