sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur tar man bort dubbletter baserade på en nyckel i Mongodb?

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.



  1. Vilka tecken är INTE tillåtna i MongoDB-fältnamn?

  2. Hur man utesluter vissa fält från dokumentet

  3. Varför ska jag använda Redis när jag har PostgreSQL som min databas för Django?

  4. Visa om listan över kapslade nycklar