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

Hvordan fjerner du dubletter baseret på en nøgle i Mongodb?

Dette svar er forældet : dropDups indstilling blev fjernet i MongoDB 3.0, så en anden tilgang vil være påkrævet i de fleste tilfælde. For eksempel kan du bruge aggregering som foreslået på:MongoDB duplikatdokumenter, selv efter tilføjelse af en unik nøgle.

Hvis du er sikker på, at source_references.key identificerer duplikerede poster, kan du sikre et unikt indeks med dropDups:true mulighed for oprettelse af indeks i MongoDB 2.6 eller ældre:

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

Dette vil beholde det første unikke dokument for hver source_references.key værdi, og slip eventuelle efterfølgende dokumenter, der ellers ville forårsage en duplikatnøgleovertrædelse.

Vigtig bemærkning :Alle dokumenter, der mangler source_references.key felt vil blive betragtet som havende et null værdi, så efterfølgende dokumenter, der mangler nøglefeltet, slettes. Du kan tilføje sparse:true mulighed for oprettelse af indeks, så indekset kun gælder for dokumenter med en source_references.key felt.

Åbenlys forsigtighed :Tag en sikkerhedskopi af din database, og prøv dette i et iscenesættelsesmiljø først, hvis du er bekymret for utilsigtet tab af data.



  1. Sådan implementeres ML-modeller til produktion

  2. Sådan rettes Redis-nøgler serialiseret med Java

  3. Fejlfinding af en MongoDB Sharded Cluster

  4. Hvad kan gøres ved at bruge CKANs asynkrone baggrundsjob?