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
_idbidang yang berisi nilai pengelompokan yang berbeda, dan - sebuah
countkolom 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.