sql >> Database >  >> NoSQL >> MongoDB

Verwijder dubbele records van mongodb 4.0

U kunt gedupliceerde records groeperen met behulp van een aggregatiepijplijn:

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

Na de uitvoering van de aggregatiepijplijn, wordt de theCollectionWithoutDuplicates collectie bevat een document voor elke groep originele gedupliceerde documenten, met een nieuwe _id - u kunt de uitvoer verifiëren door de originele verzameling te verwijderen (db.theCollection.drop() ) en hernoem de nieuwe collectie (db.theCollectionWithoutDuplicates.renameCollection('theCollection') ). Verwijderen en hernoemen kunnen worden gecombineerd in db.theCollectionWithoutDuplicates.renameCollection('theCollection', true) .

UITLEG van het gebruik van de aggregatiepijplijn:

  1. db.theCollection.aggregate([]) voert een aggregatiepijplijn uit en ontvangt een lijst met uit te voeren aggregatiestadia
  2. de $group stage groepen document door velden gespecificeerd als volgende _id veld
  3. het $project fase verandert veldnamen, afvlakken geneste _id subdocumenten geproduceerd door $group
  4. de $out stage slaat aggregatie van resulterende documenten op in een bepaalde verzameling


  1. Hoe krijg ik een bijgewerkt document terug van de findOneAndUpdate-methode?

  2. onderscheiden met meerdere velden en met waar voorwaarde in mongodb

  3. MongoDB automatiseren met SaltStack

  4. Kan buffer niet schrijven naar MongoDB GridFS