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

Wie kann ich Duplikate in MongoDb löschen?

MongoDB tut dies wahrscheinlich, um sich zu verteidigen. Wenn Sie dropDups Im falschen Feld könnten Sie den gesamten Datensatz abspritzen und die DB mit Löschvorgängen sperren (die "so teuer" sind wie Schreibvorgänge).

Die erste Frage ist also, warum Sie einen eindeutigen Index für die id erstellen Feld?

MongoDB erstellt eine Standard-_id Feld, das automatisch eindeutig ist und indexiert. Standardmäßig füllt MongoDB die _id mit einer ObjectId , Sie können dies jedoch mit einem beliebigen Wert überschreiben. Wenn Sie also einen fertigen Satz von ID-Werten haben, können Sie diese verwenden .

Wenn Sie die Werte nicht erneut importieren können, kopieren Sie sie in eine neue Sammlung, während Sie id ändern in _id . Sie können dann die alte Sammlung löschen und die neue umbenennen. (Beachten Sie, dass Sie eine Reihe von "Duplicate-Key-Fehlern" erhalten, stellen Sie sicher, dass Ihr Code sie abfängt und ignoriert )