sql >> Database >  >> NoSQL >> MongoDB

Hoe duplicaten te verwijderen op basis van een sleutel in Mongodb?

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.



  1. Hoe verbinding maken met een Docker Redis-clusterinstantie met behulp van jedis voor Java?

  2. redis cluster continu print log WSA_IO_PENDING

  3. MongoDB $concatArrays

  4. Hoe bestaande documenten te vervangen bij het importeren van een bestand in MongoDB