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

Entfernen Sie doppelte Datensätze aus Mongodb 4.0

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:

  1. db.theCollection.aggregate([]) führt eine Aggregationspipeline aus und erhält eine Liste der auszuführenden Aggregationsstufen
  2. die $group Stage gruppiert Dokument nach Feldern, die als nachfolgende _id angegeben sind Feld
  3. das $project stage ändert Feldnamen und reduziert verschachtelte _id Unterdokumente, die von $group erstellt wurden
  4. der $out Stage speichert aus der Aggregation resultierende Dokumente in einer bestimmten Sammlung