Diese Antwort ist veraltet : die dropDups
Option wurde in MongoDB 3.0 entfernt, sodass in den meisten Fällen ein anderer Ansatz erforderlich ist. Beispielsweise könnten Sie die Aggregation verwenden, wie vorgeschlagen auf:MongoDB doppelte Dokumente auch nach dem Hinzufügen eines eindeutigen Schlüssels.
Wenn Sie sicher sind, dass die Datei source_references.key
doppelte Datensätze identifiziert, können Sie mit dem dropDups:true
einen eindeutigen Index sicherstellen Indexerstellungsoption in MongoDB 2.6 oder älter:
db.things.ensureIndex({'source_references.key' : 1}, {unique : true, dropDups : true})
Dadurch wird das erste eindeutige Dokument für jeden source_references.key
beibehalten Wert, und löschen Sie alle nachfolgenden Dokumente, die andernfalls eine Verletzung des doppelten Schlüssels verursachen würden.
Wichtiger Hinweis :Alle Dokumente, denen der source_references.key
fehlt wird als null betrachtet Wert, sodass nachfolgende Dokumente, denen das Schlüsselfeld fehlt, gelöscht werden. Sie können sparse:true
hinzufügen Indexerstellungsoption, sodass der Index nur für Dokumente mit einem source_references.key
gilt Feld.
Offensichtliche Vorsicht :Erstellen Sie eine Sicherungskopie Ihrer Datenbank und versuchen Sie dies zunächst in einer Staging-Umgebung, wenn Sie Bedenken wegen unbeabsichtigten Datenverlusts haben.