Anda dapat mengelompokkan rekaman duplikat menggunakan jalur agregasi:
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"}
])
Setelah eksekusi pipa agregasi, theCollectionWithoutDuplicates
koleksi berisi dokumen untuk setiap kelompok dokumen asli yang digandakan, dengan _id
baru - Anda dapat memverifikasi output, menghapus koleksi asli (db.theCollection.drop()
) dan ganti nama koleksi baru (db.theCollectionWithoutDuplicates.renameCollection('theCollection')
). Jatuhkan dan ganti nama dapat digabungkan dalam db.theCollectionWithoutDuplicates.renameCollection('theCollection', true)
.
PENJELASAN penggunaan pipa agregasi:
db.theCollection.aggregate([])
mengeksekusi pipeline agregasi, menerima daftar tahapan agregasi yang akan dieksekusi$group
dokumen grup tahap menurut bidang yang ditentukan sebagai_id
berikutnya lapangan$project
tahap mengubah nama bidang, meratakan_id
subdokumen yang dihasilkan oleh$group
$out
tahap menyimpan agregasi dokumen yang dihasilkan ke dalam koleksi yang diberikan