MongoDB-এ র্যান্ডমলি ডকুমেন্ট সিলেক্ট করতে এগْرিগেশন পাইপলাইনে $sample স্টেজ ব্যবহার করা হয়।
ডেমো কলেকশন তৈরি (৬টি ডকুমেন্ট)
সকল ডকুমেন্ট দেখা
{ "_id" : ObjectId("5c9ec9aad628fa4220163b87"), "StudentId" : 10 } { "_id" : ObjectId("5c9ec9add628fa4220163b88"), "StudentId" : 100 } { "_id" : ObjectId("5c9ec9b0d628fa4220163b89"), "StudentId" : 45 } { "_id" : ObjectId("5c9ec9b3d628fa4220163b8a"), "StudentId" : 55 } { "_id" : ObjectId("5c9ec9b7d628fa4220163b8b"), "StudentId" : 5 } { "_id" : ObjectId("5c9ec9bad628fa4220163b8c"), "StudentId" : 7 }২টি র্যান্ডম ডকুমেন্ট পাওয়া (size: 2)
{ "_id" : ObjectId("5c9ec9b3d628fa4220163b8a"), "StudentId" : 55 } { "_id" : ObjectId("5c9ec9aad628fa4220163b87"), "StudentId" : 10 }আউটপুট (দ্বিতীয় রান - ভিন্ন ডকুমেন্ট)
$sample স্টেজের বৈশিষ্ট্য
- রেজারভোয়ার স্যাম্পলিং অ্যালগরিদম ব্যবহার করে
- প্রতিটি রানে ভিন্ন রেজাল্ট দেয় (র্যান্ডম)
sizeফিল্ডে পাওয়া ডকুমেন্ট সংখ্যা নিদিষ্ট করুন- কলেকশন সাইজ ছোট হলে পুরো কালেকশন মেমরিতে লোড করে
সীমাবদ্ধতা
- শার্ডেড কলেকশনে সঠিকভাবে কাজ নাও করতে পারে
- ভিউ (view)-এ সরাসরি ব্যবহার করা যায় না
$matchপরে ব্যবহার করলে পারফরম্যান্স কমে
সঠিক অর্ডার (ফিল্টার után স্যাম্পল)
বিকল্প:.skip() + .limit() (র্যান্ডম নয়)