Duplicitní záznamy můžete seskupit pomocí agregačního kanálu:
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"}
])
Po provedení agregačního kanálu se theCollectionWithoutDuplicates kolekce obsahuje dokument pro každou skupinu původních duplicitních dokumentů s novým _id - můžete ověřit výstup odstraněním původní kolekce (db.theCollection.drop() ) a přejmenujte novou kolekci (db.theCollectionWithoutDuplicates.renameCollection('theCollection') ). Přetažení a přejmenování lze kombinovat v db.theCollectionWithoutDuplicates.renameCollection('theCollection', true) .
VYSVĚTLENÍ použití agregačního kanálu:
db.theCollection.aggregate([])provede agregační kanál a obdrží seznam fází agregace, které mají být provedeny- skupina
$groupfáze seskupuje dokument podle polí určených jako následující_idpole $projectfáze mění názvy polí, zplošťuje vnořené_idvnořené dokumenty vytvořené$group$outstage ukládá agregované výsledné dokumenty do dané kolekce