Можете да групирате дублирани записи с помощта на тръбопровод за агрегиране:
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"}
])
След изпълнението на тръбопровода за агрегиране, theCollectionWithoutDuplicates
колекцията съдържа документ за всяка група оригинални дублирани документи с нов _id
- можете да проверите изхода, като премахнете оригиналната колекция (db.theCollection.drop()
) и преименувайте новата колекция (db.theCollectionWithoutDuplicates.renameCollection('theCollection')
). Пускането и преименуването могат да се комбинират в db.theCollectionWithoutDuplicates.renameCollection('theCollection', true)
.
ОБЯСНЕНИЕ на използването на тръбопровода за агрегиране:
db.theCollection.aggregate([])
изпълнява тръбопровод за агрегиране, като получава списък с етапи на агрегиране, които трябва да бъдат изпълнени$group
етап групи документи по полета, посочени като следващ_id
поле$project
етап промени имена на полета, изравняване на вложен_id
поддокументи, произведени от$group
$out
етапът съхранява агрегираните получени документи в дадена колекция