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$group
fase grupperer dokument efter felter angivet som efterfølgende_id
felt$project
fase ændrer feltnavne, udfladning af indlejrede_id
underdokumenter produceret af$group
$out
scenen gemmer aggregering resulterende dokumenter i en given samling