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
$group
stage groepen document door velden gespecificeerd als volgende_id
veld - het
$project
fase verandert veldnamen, afvlakken geneste_id
subdocumenten geproduceerd door$group
- de
$out
stage slaat aggregatie van resulterende documenten op in een bepaalde verzameling