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.