MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie entferne ich Duplikate basierend auf einem Schlüssel in Mongodb?

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.