Di MongoDB $sortByCount
tahap pipa agregasi mengelompokkan dokumen yang masuk berdasarkan nilai ekspresi yang ditentukan, lalu menghitung jumlah dokumen di setiap grup yang berbeda.
Setiap grup adalah keluaran dalam dokumennya sendiri, yang terdiri dari dua bidang:
- sebuah
_id
bidang yang berisi nilai pengelompokan yang berbeda, dan - sebuah
count
kolom yang berisi jumlah dokumen yang termasuk dalam pengelompokan tersebut.
Dokumen diurutkan berdasarkan count
dalam urutan menurun.
Contoh
Misalkan kita memiliki koleksi yang disebut pets
dengan dokumen sebagai berikut:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 } { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 } { "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 } { "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 } { "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 } { "_id" : 8, "name" : "Tweet", "type" : "Bird", "weight" : 1 } { "_id" : 9, "name" : "Flutter", "type" : "Bird", "weight" : 2 }
Di bawah ini adalah contoh kueri yang menggunakan $sortByCount
operator.
db.pets.aggregate([
{ $match: {} },
{ $sortByCount: "$type" }
])
Hasil:
{ "_id" : "Dog", "count" : 4 } { "_id" : "Cat", "count" : 2 } { "_id" : "Bird", "count" : 2 } { "_id" : "Bat", "count" : 1 }
Dalam contoh ini, kami menampilkan setiap jenis hewan peliharaan, bersama dengan jumlah hewan peliharaan dari masing-masing jenis.
Ini setara dengan yang berikut:
db.pets.aggregate([
{
$match: { }
},
{
$group: { _id: "$type", count: { $sum: 1 } }
},
{
$sort : { count : -1 }
}
])
Berikut contoh lain, tetapi dengan kriteria pemfilteran tambahan.
db.pets.aggregate([
{
$match: { weight: { $lt: 15 } }
},
{
$sortByCount: "$type"
}
])
Hasil:
{ "_id" : "Cat", "count" : 2 } { "_id" : "Bird", "count" : 2 } { "_id" : "Dog", "count" : 1 } { "_id" : "Bat", "count" : 1 }
Kali ini hanya ada satu anjing dalam dokumen yang dikirimkan ke $sortByCount
, karena tahap pipa pertama memindahkan anjing dengan berat tertentu. Oleh karena itu, $sortByCount
cukup hitung angka dari dokumen yang diberikan padanya, yang hanya menyertakan satu anjing.
Informasi Lebih Lanjut
Lihat dokumentasi MongoDB untuk informasi lebih lanjut.