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

MongoDB $sampelRate

Di MongoDB, $sampleRate tahap pipa agregasi cocok dengan pilihan dokumen input secara acak.

Jumlah dokumen yang dipilih mendekati tingkat sampel yang dinyatakan sebagai persentase dari jumlah total dokumen.

$sampleRate operator diperkenalkan di MongoDB 4.4.2.

Saat Anda menggunakan $sampleRate , Anda memberikan tingkat sampel sebagai angka floating point antara 0 dan 1 . Proses pemilihan menggunakan distribusi acak yang seragam, dan laju sampel yang Anda berikan mewakili probabilitas bahwa dokumen tertentu akan dipilih saat melewati jalur pipa.

Contoh

Misalkan kita memiliki koleksi yang disebut employees dengan dokumen sebagai berikut:

{ "_id" : 1, "name" : "Bob", "salary" : 55000 }
{ "_id" : 2, "name" : "Sarah", "salary" : 128000 }
{ "_id" : 3, "name" : "Fritz", "salary" : 25000 }
{ "_id" : 4, "name" : "Christopher", "salary" : 45000 }
{ "_id" : 5, "name" : "Beck", "salary" : 82000 }
{ "_id" : 6, "name" : "Homer", "salary" : 1 }
{ "_id" : 7, "name" : "Bartholomew", "salary" : 1582000 }
{ "_id" : 8, "name" : "Zoro", "salary" : 300000 }
{ "_id" : 9, "name" : "Xena", "salary" : 382000 }

Kita dapat menggunakan $sample tahap untuk secara acak memilih sejumlah dokumen tertentu dari koleksi itu.

Contoh:

db.employees.aggregate(
   [
      { 
        $match: { $sampleRate: 0.33 } 
      }
   ]
)

Hasil:

{ "_id" : 1, "name" : "Bob", "salary" : 55000 }
{ "_id" : 6, "name" : "Homer", "salary" : 1 }
{ "_id" : 8, "name" : "Zoro", "salary" : 300000 }

Dengan memberikan tingkat sampel 0.33 , kami menetapkan bahwa kira-kira sepertiga dari dokumen harus dikembalikan.

Namun, hasil sebenarnya dapat sangat bervariasi, tergantung pada berapa banyak dokumen yang ada dalam koleksi. Koleksi dengan jumlah dokumen yang lebih sedikit akan memiliki hasil yang cukup bervariasi, sedangkan koleksi yang lebih besar harus lebih mendekati distribusi acak seragam yang diharapkan.

Untuk mendemonstrasikan ini, inilah kumpulan hasil yang saya dapatkan ketika saya menjalankan kode yang sama lagi:

{ "_id" : 2, "name" : "Sarah", "salary" : 128000 }
{ "_id" : 3, "name" : "Fritz", "salary" : 25000 }
{ "_id" : 4, "name" : "Christopher", "salary" : 45000 }
{ "_id" : 5, "name" : "Beck", "salary" : 82000 }
{ "_id" : 6, "name" : "Homer", "salary" : 1 }
{ "_id" : 7, "name" : "Bartholomew", "salary" : 1582000 }

Dan lagi:

{ "_id" : 7, "name" : "Bartholomew", "salary" : 1582000 }
{ "_id" : 8, "name" : "Zoro", "salary" : 300000 }

Dan sekali lagi:

{ "_id" : 3, "name" : "Fritz", "salary" : 25000 }
{ "_id" : 6, "name" : "Homer", "salary" : 1 }
{ "_id" : 7, "name" : "Bartholomew", "salary" : 1582000 }

Ini adalah koleksi yang lebih kecil, sehingga hasilnya sangat bervariasi.

Jika Anda memerlukan jumlah pasti dokumen yang akan dikembalikan, gunakan $sample panggung sebagai gantinya.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mengaktifkan Kompresi Data di MongoDB 3.0

  2. Gunakan $gte dan <e operator mongo jika tanggal dalam format string di mongodb

  3. 6 Alat Berguna untuk Memantau Kinerja MongoDB

  4. banyak ke banyak hubungan dengan nosql (mongodb dan luwak)

  5. Menyimpan null vs tidak menyimpan kunci sama sekali di MongoDB