Този отговор е остарял : dropDups
опцията беше премахната в MongoDB 3.0, така че в повечето случаи ще се изисква различен подход. Например, можете да използвате агрегиране, както е предложено за:MongoDB дублиращи се документи дори след добавяне на уникален ключ.
Ако сте сигурни, че source_references.key
идентифицира дублиращи се записи, можете да осигурите уникален индекс с dropDups:true
Опция за създаване на индекс в MongoDB 2.6 или по-стара:
db.things.ensureIndex({'source_references.key' : 1}, {unique : true, dropDups : true})
Това ще запази първия уникален документ за всеки source_references.key
стойност и изтрийте всички последващи документи, които иначе биха довели до нарушаване на дублиран ключ.
Важна забележка :Всички документи, в които липсва source_references.key
ще се счита, че има нула стойност, така че следващите документи, в които липсва ключовото поле, ще бъдат изтрити. Можете да добавите sparse:true
опция за създаване на индекс, така че индексът да се прилага само за документи с source_references.key
поле.
Очевидно внимание :Направете резервно копие на вашата база данни и опитайте това първо в промежуточна среда, ако се притеснявате от неволна загуба на данни.