Det här svaret är föråldrat : dropDups
alternativet togs bort i MongoDB 3.0, så ett annat tillvägagångssätt kommer att krävas i de flesta fall. Du kan till exempel använda aggregering enligt förslaget på:MongoDB dubbletter av dokument även efter att du har lagt till unik nyckel.
Om du är säker på att source_references.key
identifierar dubbletter av poster kan du säkerställa ett unikt index med dropDups:true
alternativ för att skapa index i MongoDB 2.6 eller äldre:
db.things.ensureIndex({'source_references.key' : 1}, {unique : true, dropDups : true})
Detta kommer att behålla det första unika dokumentet för varje source_references.key
värde och släpp alla efterföljande dokument som annars skulle orsaka en dubblett av nyckelöverträdelser.
Viktig anmärkning :Alla dokument som saknar source_references.key
fältet kommer att anses ha en null värde, så efterföljande dokument som saknar nyckelfältet kommer att raderas. Du kan lägga till sparse:true
alternativ för att skapa index så att indexet endast gäller dokument med en source_references.key
fältet.
Uppenbar försiktighet :Ta en säkerhetskopia av din databas och prova detta i en iscensättningsmiljö först om du är orolig för oavsiktlig dataförlust.