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
$group
fáze seskupuje dokument podle polí určených jako následující_id
pole $project
fáze mění názvy polí, zplošťuje vnořené_id
vnořené dokumenty vytvořené$group
$out
stage ukládá agregované výsledné dokumenty do dané kolekce