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:
db.theCollection.aggregate([])voert een aggregatiepijplijn uit en ontvangt een lijst met uit te voeren aggregatiestadia- de
$groupstage groepen document door velden gespecificeerd als volgende_idveld - het
$projectfase verandert veldnamen, afvlakken geneste_idsubdocumenten geproduceerd door$group - de
$outstage slaat aggregatie van resulterende documenten op in een bepaalde verzameling