Sie können duplizierte Datensätze mithilfe der Aggregationspipeline gruppieren:
db.theCollection.aggregate([
{$group: {_id: {item: "$item", qty: "$qty", size: "$size", status: "$status"}}},
{$project: {_id: 0, item: "$_id.item", qty: "$_id.qty", size: "$_id.size", status: "$_id.status"}},
{$out: "theCollectionWithoutDuplicates"}
])
Nach der Ausführung der Aggregationspipeline wird die theCollectionWithoutDuplicates
Sammlung enthält ein Dokument für jede Gruppe ursprünglich duplizierter Dokumente mit einer neuen _id
- Sie können die Ausgabe überprüfen und die ursprüngliche Sammlung entfernen (db.theCollection.drop()
) und benennen Sie die neue Sammlung um (db.theCollectionWithoutDuplicates.renameCollection('theCollection')
). Löschen und Umbenennen können in db.theCollectionWithoutDuplicates.renameCollection('theCollection', true)
kombiniert werden .
ERKLÄRUNG zur Nutzung der Aggregationspipeline:
db.theCollection.aggregate([])
führt eine Aggregationspipeline aus und erhält eine Liste der auszuführenden Aggregationsstufen- die
$group
Stage gruppiert Dokument nach Feldern, die als nachfolgende_id
angegeben sind Feld - das
$project
stage ändert Feldnamen und reduziert verschachtelte_id
Unterdokumente, die von$group
erstellt wurden - der
$out
Stage speichert aus der Aggregation resultierende Dokumente in einer bestimmten Sammlung