sql >> Databáze >  >> NoSQL >> MongoDB

mongo 3 duplikáty na unikátním indexu - dropDups

Ano dropDupes je nyní od verze 2.7.5 zastaralý, protože nebylo možné správně předpovědět, který dokument bude v procesu smazán.

Obvykle máte 2 možnosti:

  1. Použít novou kolekci :

    • Vytvořte novou sbírku,
    • Vytvořte jedinečný index pro tuto novou kolekci,
    • Spusťte dávku a zkopírujte všechny dokumenty ze staré kolekce do nové a ujistěte se, že během procesu ignorujete chybu duplicitního klíče.
  2. Vypořádejte se s tím ve své vlastní sbírce ručně:

    • ujistěte se, že do kódu nevložíte více duplicitních dokumentů,
    • spusťte ve své sbírce dávku, abyste odstranili duplikáty (a ujistěte se, že si ponecháte ten dobrý, pokud nejsou zcela identické),
    • pak přidejte jedinečný index.

Pro váš konkrétní případ bych doporučil první možnost ale s trikem:

  • Vytvořte novou kolekci s jedinečným indexem,
  • Aktualizujte svůj kód, abyste nyní mohli vkládat dokumenty do oba tabulky,
  • Spusťte dávku a zkopírujte všechny dokumenty ze staré kolekce do nové (ignorujte chybu duplicitního klíče),
  • přejmenujte novou sbírku tak, aby odpovídala starému názvu.
  • znovu aktualizujte svůj kód, abyste nyní zapisovali pouze do „staré“ sbírky


  1. Vytvoření nové sady z řady Sorted Set v Redis

  2. Chyba 99 při připojování k localhost:6379. Nelze přiřadit požadovanou adresu

  3. Rails, Sidekiq - Redis NOAUTH

  4. Jak uložit pole Datum jako ISODate() pomocí jackson v MongoDb