sql >> Database teknologi >  >> NoSQL >> MongoDB

Fjern duplikerede poster fra mongodb 4.0

Du kan gruppere duplikerede poster ved hjælp af aggregeringspipeline:

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"}
])

Efter udførelse af aggregeringspipeline vil theCollectionWithoutDuplicates samling indeholder et dokument for hver gruppe af originale duplikerede dokumenter med en ny _id - du kan bekræfte outputtet ved at fjerne den originale samling (db.theCollection.drop() ) og omdøb den nye samling (db.theCollectionWithoutDuplicates.renameCollection('theCollection') ). Drop og omdøb kan kombineres i db.theCollectionWithoutDuplicates.renameCollection('theCollection', true) .

FORKLARING af aggregeringspipelinebrug:

  1. db.theCollection.aggregate([]) udfører en aggregeringspipeline, modtager en liste over aggregeringsstadier, der skal udføres
  2. $group fase grupperer dokument efter felter angivet som efterfølgende _id felt
  3. $project fase ændrer feltnavne, udfladning af indlejrede _id underdokumenter produceret af $group
  4. $out scenen gemmer aggregering resulterende dokumenter i en given samling


  1. Hvordan får man vist dokumentfelter i mongo shell?

  2. MongoDB - børn og forældrestruktur

  3. Bedre forklaring af bson spec-eksempler?

  4. Mongodb datastatistikvisualisering ved hjælp af matplotlib