MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

7 Cara Menghitung Dokumen di MongoDB

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 perintah
  • db.collection.count() metode
  • db.collection.countDocuments() metode
  • db.collection.estimatedDocumentCount() metode
  • cursor.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 untuk countDocuments() dan estimatedDocumentCount() . 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.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Proyeksikan item pertama dalam larik ke bidang baru (agregasi MongoDB)

  2. Bagaimana cara mendapatkan Skema database luwak yang didefinisikan dalam model lain

  3. Cara Mengoptimalkan Kinerja MongoDB

  4. Kemungkinan duplikat Mongo ObjectId dihasilkan dalam dua koleksi berbeda?

  5. Memetakan dokumen dengan skema yang ditentukan sebagian