MongoDB में, $sampleRate
एकत्रीकरण पाइपलाइन चरण इनपुट दस्तावेज़ों के यादृच्छिक चयन से मेल खाता है।
चयनित दस्तावेज़ों की संख्या दस्तावेज़ों की कुल संख्या के प्रतिशत के रूप में व्यक्त नमूना दर का अनुमान लगाती है।
$sampleRate
ऑपरेटर को MongoDB 4.4.2 में पेश किया गया था।
जब आप $sampleRate
. का उपयोग करते हैं , आप 0
. के बीच फ्लोटिंग पॉइंट नंबर के रूप में नमूना दर प्रदान करते हैं और 1
. चयन प्रक्रिया एक समान यादृच्छिक वितरण का उपयोग करती है, और आपके द्वारा प्रदान की जाने वाली नमूना दर इस संभावना का प्रतिनिधित्व करती है कि किसी दिए गए दस्तावेज़ को पाइपलाइन से गुजरते समय चुना जाएगा।
उदाहरण
मान लीजिए हमारे पास employees
. नामक संग्रह है निम्नलिखित दस्तावेजों के साथ:
{ "_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 }
हम $sample
. का उपयोग कर सकते हैं उस संग्रह से दस्तावेज़ों की एक निर्दिष्ट संख्या को बेतरतीब ढंग से चुनने के लिए चरण।
उदाहरण:
db.employees.aggregate(
[
{
$match: { $sampleRate: 0.33 }
}
]
)
परिणाम:
{ "_id" : 1, "name" : "Bob", "salary" : 55000 } { "_id" : 6, "name" : "Homer", "salary" : 1 } { "_id" : 8, "name" : "Zoro", "salary" : 300000 }
0.33
. की नमूना दर प्रदान करके , हमने निर्दिष्ट किया है कि लगभग एक तिहाई दस्तावेज़ वापस कर दिए जाने चाहिए।
हालांकि, संग्रह में कितने दस्तावेज़ हैं, इसके आधार पर वास्तविक परिणाम काफी भिन्न हो सकते हैं। कम संख्या में दस्तावेज़ों वाले संग्रह के परिणाम काफी भिन्न होंगे, जबकि बड़े संग्रह अपेक्षित समान यादृच्छिक वितरण के करीब होने चाहिए।
इसे प्रदर्शित करने के लिए, जब मैं उसी कोड को दोबारा चलाता हूं तो मुझे परिणाम सेट मिलता है:
{ "_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" : 7, "name" : "Bartholomew", "salary" : 1582000 } { "_id" : 8, "name" : "Zoro", "salary" : 300000 }
और एक बार फिर:
{ "_id" : 3, "name" : "Fritz", "salary" : 25000 } { "_id" : 6, "name" : "Homer", "salary" : 1 } { "_id" : 7, "name" : "Bartholomew", "salary" : 1582000 }
यह एक छोटा संग्रह है, और इसलिए परिणाम काफी भिन्न होते हैं।
यदि आपको सही संख्या में दस्तावेज़ लौटाने की आवश्यकता है, तो $sample
. का उपयोग करें इसके बजाय मंच।