Sementara .distinct()
bekerja dengan baik hanya untuk mendapatkan nilai yang berbeda untuk suatu bidang, untuk benar-benar mendapatkan jumlah kemunculan, ini lebih cocok untuk kerangka kerja agregasi:
Collection.aggregate([
{ "$group": {
"_id": "$field",
"count": { "$sum": 1 }
}}
],function(err,result) {
});
Juga .distinct()
metode melakukan "abstrak" dari tempat bidang "berbeda" yang ditentukan sebenarnya berada dalam array. Dalam hal ini, Anda perlu memanggil $unwind
pertama untuk memproses elemen array di sini:
Collection.aggregate([
{ "$unwind": "$array" },
{ "$group": {
"_id": "$array.field",
"count": { "$sum": 1 }
}}
],function(err,result) {
});
Jadi pekerjaan utama pada dasarnya dilakukan di $group
dengan "pengelompokan" pada nilai bidang, yang artinya sama dengan "berbeda". $sum
adalah operator pengelompokan yang dalam hal ini hanya menambahkan 1
untuk setiap kemunculan nilai itu di bidang untuk koleksi itu.