MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak usunąć duplikaty na podstawie klucza w Mongodb?

Ta odpowiedź jest przestarzała: dropDups opcja została usunięta w MongoDB 3.0, więc w większości przypadków wymagane będzie inne podejście. Na przykład, możesz użyć agregacji zgodnie z sugestią:Zduplikowane dokumenty MongoDB nawet po dodaniu unikalnego klucza.

Jeśli masz pewność, że source_references.key identyfikuje zduplikowane rekordy, możesz zapewnić unikalny indeks za pomocą dropDups:true opcja tworzenia indeksu w MongoDB 2.6 lub starszym:

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

Pozwoli to zachować pierwszy unikalny dokument dla każdego source_references.key wartość i upuść wszystkie kolejne dokumenty, które w przeciwnym razie spowodowałyby naruszenie duplikatu klucza.

Ważna uwaga :wszystkie dokumenty, w których brakuje source_references.key pole będzie traktowane jako mające null wartość, dzięki czemu kolejne dokumenty bez pola kluczowego będą usuwane. Możesz dodać sparse:true opcja tworzenia indeksu, dzięki czemu indeks dotyczy tylko dokumentów z source_references.key pole.

Oczywista ostrożność :Zrób kopię zapasową bazy danych i wypróbuj ją najpierw w środowisku pomostowym, jeśli obawiasz się niezamierzonej utraty danych.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Napraw „$pullAll wymaga argumentu tablicowego, ale otrzymał podwójną” w MongoDB

  2. Node.js — tworzenie relacji z Mongoose

  3. Prosty sposób na generowanie kodu za pomocą Mongoose i Node.js i Underscore?

  4. Usuwanie odniesień jeden-jeden i jeden-wiele - Mongoose

  5. Poważny spadek wydajności dzięki strumieniom zmian MongoDB