Du kan gruppera dubblerade poster med hjälp av 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 exekveringen av aggregeringspipeline, theCollectionWithoutDuplicates samlingen innehåller ett dokument för varje grupp av original duplicerade dokument, med en ny _id - du kan verifiera resultatet och ta bort originalsamlingen (db.theCollection.drop() ) och byt namn på den nya samlingen (db.theCollectionWithoutDuplicates.renameCollection('theCollection') ). Släpp och byt namn kan kombineras i db.theCollectionWithoutDuplicates.renameCollection('theCollection', true) .
FÖRKLARING av aggregeringspipelineanvändning:
db.theCollection.aggregate([])exekverar en aggregeringspipeline, tar emot en lista över aggregeringssteg som ska köras$groupsteg grupperar dokument efter fält som anges som efterföljande_idfältet$projectsteg ändrar fältnamn, plattar ut kapslade_idunderdokument producerade av$group$outscenen lagrar aggregerade dokument i en given samling