MongoDB menawarkan berbagai metode untuk menghitung dokumen dalam koleksi atau tampilan. Ada juga beberapa operator agregasi yang memungkinkan Anda menghitung dokumen yang masuk dari tahap pipeline agregasi sebelumnya.
Artikel ini menyajikan cara-cara berikut untuk menghitung dokumen di shell mongo:
count
perintahdb.collection.count()
metodedb.collection.countDocuments()
metodedb.collection.estimatedDocumentCount()
metodecursor.count()
metode$count
operator pipa agregasi$sortByCount
operator pipa agregasi
count
Perintah
count
perintah menghitung jumlah dokumen dalam koleksi atau tampilan.
Contoh:
db.runCommand( {
count: "pets",
query: { type: "Dog" }
} )
Hasil:
{ "n" :4, "ok" :1 }
Dalam contoh ini, kita dapat melihat bahwa ada empat anjing di pets
koleksi.
Kita juga dapat melihat bahwa ia mengembalikan dokumen yang berisi hitungan serta status perintah.
The db.collection.count()
Metode
db.collection.count()
metode mengembalikan jumlah dokumen yang akan cocok dengan find()
kueri untuk koleksi atau tampilan.
collection
bagian adalah nama koleksi atau tampilan untuk melakukan operasi penghitungan.
db.collection.count()
metode adalah metode pembungkus untuk count
perintah.
Contoh:
db.pets.count({
"type": "Dog"
})
Hasil:
4
db.collection.count()
metode tidak mengembalikan dokumen seperti count
perintah tidak. Ini hanya mengembalikan hitungan.
The countDocuments()
Metode
db.collection.countDocuments()
metode mengembalikan jumlah dokumen yang cocok dengan kueri untuk koleksi atau tampilan.
collection
bagian adalah nama koleksi atau tampilan untuk melakukan operasi penghitungan.
Contoh:
db.pets.countDocuments({
"type": "Dog"
})
Hasil:
4
Pada dasarnya hasil yang sama dengan db.collection.count()
, meskipun disarankan untuk menggunakan countDocuments()
bukannya count()
jika memungkinkan.
Dokumentasi MongoDB menyatakan:
Driver MongoDB yang kompatibel dengan fitur 4.0 tidak lagi menggunakan kursor dan koleksinya masing-masing
count()
API yang mendukung API baru untukcountDocuments()
danestimatedDocumentCount()
. Untuk nama API spesifik untuk driver tertentu, lihat dokumentasi driver.
Juga, ketika digunakan tanpa predikat kueri, count()
bergantung pada metadata, yang dapat menghasilkan perkiraan jumlah. countDocuments()
sebaliknya, tidak bergantung pada metadata, dan mengembalikan penghitungan yang akurat dengan melakukan agregasi dokumen.
estimatedDocumentCount()
Metode
db.collection.estimatedDocumentCount()
metode adalah pembungkus untuk count
perintah yang mengembalikan hitungan semua dokumen dalam koleksi atau tampilan.
Contoh:
db.pets.estimatedDocumentCount()
Hasil:
7
db.collection.estimatedDocumentCount()
metode tidak menggunakan filter kueri. Alih-alih menggunakan metadata untuk mengembalikan jumlah dokumen untuk seluruh koleksi/tampilan.
cursor.count()
Metode
cursor.count()
metode adalah pembungkus untuk count
perintah yang menghitung jumlah dokumen yang dirujuk oleh kursor..
Itu tidak benar-benar melakukan kueri. Ini hanya menghitung dan mengembalikan jumlah hasil yang akan dikembalikan oleh kueri.
Contoh:
db.pets.find({"type": "Dog"}).count()
Hasil:
4
Ini sama dengan db.collection.count()
contoh metode di atas.
Seperti dikutip di atas, driver MongoDB yang kompatibel dengan fitur 4.0 tidak lagi menggunakan kursor dan koleksinya masing-masing count()
API yang mendukung API baru untuk countDocuments()
dan estimatedDocumentCount()
.
$count
Operator Pipa Agregasi
$count
operator agregasi meneruskan dokumen ke tahap berikutnya dalam pipa agregasi yang berisi hitungan jumlah dokumen yang diinput ke tahap saat ini.
Contoh:
db.pets.aggregate([
{
$match: { type: "Dog" }
},
{
$count: "DogCount"
}
])
Hasil:
{ "DogCount" :4 }
Berikut contoh lain yang menunjukkan bagaimana Anda dapat menggunakan operator ini untuk menghitung hasil yang dikelompokkan.
db.pets.aggregate([
{
$match: { weight: { $lt: 30 } }
},
{
$group: { _id: "$type", count: { $sum: 1 } }
},
{
$sort : { count : -1, _id: 1 }
}
])
Hasil:
{ "_id" : "Dog", "count" : 3 }
{ "_id" : "Cat", "count" : 2 }
{ "_id" : "Bat", "count" : 1 }
Permintaan khusus ini dapat dilakukan dengan lebih sedikit kode dengan menggunakan $sortByCount
operator pipa agregasi (di bawah).
$sortByCount
Operator Pipa Agregasi
$sortByCount
operator agregasi mengelompokkan dokumen yang masuk berdasarkan nilai ekspresi yang ditentukan, lalu menghitung jumlah dokumen di setiap grup yang berbeda.
Inilah cara kita dapat menggunakan $sortByCount
untuk mencapai hasil yang sama seperti contoh sebelumnya:
db.pets.aggregate([
{
$match: { weight: { $lt: 30 } }
},
{
$sortByCount: "$type"
}
])
Hasil:
{ "_id" :"Anjing", "count" :3 }{ "_id" :"Kucing", "count" :2 }{ "_id" :"Bat", "count" :1 }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.