sql >> Database >  >> NoSQL >> MongoDB

mongo 3 duplicaten op unieke index - dropDups

Ja dropDupes is nu verouderd sinds versie 2.7.5 omdat het niet mogelijk was om correct te voorspellen welk document in het proces zou worden verwijderd.

Meestal heb je 2 opties:

  1. Gebruik een nieuwe collectie :

    • Maak een nieuwe collectie,
    • Maak de unieke index voor deze nieuwe collectie,
    • Voer een batch uit om alle documenten van de oude verzameling naar de nieuwe te kopiëren en zorg ervoor dat u tijdens het proces dubbele sleutelfouten negeert.
  2. Verwerk het handmatig in je eigen collectie :

    • zorg ervoor dat u niet meer dubbele documenten in uw code invoegt,
    • voer een batch uit op uw verzameling om de duplicaten te verwijderen (en zorg ervoor dat u de goede behoudt als ze niet volledig identiek zijn),
    • voeg vervolgens de unieke index toe.

Voor jouw specifieke geval zou ik de eerste optie aanraden maar met een truc:

  • Maak een nieuwe collectie met een unieke index,
  • Update uw code zodat u nu documenten in beide . invoegt tafels,
  • Voer een batch uit om alle documenten van de oude collectie naar de nieuwe te kopiëren (negeer dubbele sleutelfout),
  • hernoem de nieuwe collectie zodat deze overeenkomt met de oude naam.
  • werk je code opnieuw bij zodat je nu alleen in de "oude" verzameling schrijft


  1. Operationeel databasebeheer

  2. Een duidelijke aggregatie van een matrixveld over indexen verkrijgen

  3. Vermijd de totale limiet van 16 MB

  4. MongoDB / Pymongo-query met Datetime