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.