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$group
steg grupperar dokument efter fält som anges som efterföljande_id
fältet$project
steg ändrar fältnamn, plattar ut kapslade_id
underdokument producerade av$group
$out
scenen lagrar aggregerade dokument i en given samling