Du kan gruppere duplikerede poster ved hjælp af aggregeringspipeline:
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"}
])
Efter udførelse af aggregeringspipeline vil theCollectionWithoutDuplicates samling indeholder et dokument for hver gruppe af originale duplikerede dokumenter med en ny _id - du kan bekræfte outputtet ved at fjerne den originale samling (db.theCollection.drop() ) og omdøb den nye samling (db.theCollectionWithoutDuplicates.renameCollection('theCollection') ). Drop og omdøb kan kombineres i db.theCollectionWithoutDuplicates.renameCollection('theCollection', true) .
FORKLARING af aggregeringspipelinebrug:
db.theCollection.aggregate([])udfører en aggregeringspipeline, modtager en liste over aggregeringsstadier, der skal udføres$groupfase grupperer dokument efter felter angivet som efterfølgende_idfelt$projectfase ændrer feltnavne, udfladning af indlejrede_idunderdokumenter produceret af$group$outscenen gemmer aggregering resulterende dokumenter i en given samling