sql >> Databasteknik >  >> NoSQL >> MongoDB

mongo 3 dubbletter på unikt index - dropDups

Ja dropDupes är nu utfasad sedan version 2.7.5 eftersom det inte var möjligt att förutsäga korrekt vilket dokument som skulle raderas i processen.

Vanligtvis har du två alternativ:

  1. Använd en ny samling :

    • Skapa en ny samling,
    • Skapa det unika indexet på denna nya samling,
    • Kör en batch för att kopiera alla dokument från den gamla samlingen till den nya och se till att du ignorerar duplicerade nyckelfel under processen.
  2. Hantera det manuellt i din egen samling :

    • se till att du inte infogar fler duplicerade dokument i din kod,
    • kör en batch på din samling för att ta bort dubbletterna (och se till att du behåller den goda om de inte är helt identiska),
    • lägg sedan till det unika indexet.

För ditt specifika fall skulle jag rekommendera det första alternativet men med ett trick :

  • Skapa en ny samling med unikt index,
  • Uppdatera din kod så att du nu infogar dokument i båda tabeller,
  • Kör en batch för att kopiera alla dokument från den gamla samlingen till den nya (ignorera duplicerat nyckelfel),
  • byt namn på den nya samlingen för att matcha det gamla namnet.
  • uppdatera din kod igen så att du nu bara skriver i den "gamla" samlingen


  1. Kan inte skanna med redis-mall

  2. Hur beräknar man den löpande summan med aggregat?

  3. MongoDB:Får inte korrekt resultat med operatorn $geoWithin

  4. MongoDB kartlägga/minska över flera samlingar?