MongoDB में, $sample
एकत्रीकरण पाइपलाइन चरण बेतरतीब ढंग से अपने इनपुट से दस्तावेजों की निर्दिष्ट संख्या का चयन करता है।
उदाहरण
मान लीजिए हमारे पास 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(
[
{
$sample: { size: 3 }
}
]
)
परिणाम:
{ "_id" : 7, "name" : "Bartholomew", "salary" : 1582000 } { "_id" : 3, "name" : "Fritz", "salary" : 25000 } { "_id" : 2, "name" : "Sarah", "salary" : 128000 }
इस मामले में मैंने निर्दिष्ट किया कि नमूना आकार 3 है। हम देख सकते हैं कि तीन दस्तावेज़ यादृच्छिक क्रम में लौटाए गए थे।
यदि मैं उसी कोड को फिर से चलाता हूं तो परिणाम यहां दिया गया है:
{ "_id" : 1, "name" : "Bob", "salary" : 55000 } { "_id" : 2, "name" : "Sarah", "salary" : 128000 } { "_id" : 9, "name" : "Xena", "salary" : 382000 }
हमें दस्तावेज़ों का एक अलग चयन मिलता है।
हम संख्या बढ़ाकर नमूना आकार बढ़ा सकते हैं।
उदाहरण:
db.employees.aggregate(
[
{
$sample: { size: 5 }
}
]
)
परिणाम:
{ "_id" : 9, "name" : "Xena", "salary" : 382000 } { "_id" : 3, "name" : "Fritz", "salary" : 25000 } { "_id" : 4, "name" : "Christopher", "salary" : 45000 } { "_id" : 8, "name" : "Zoro", "salary" : 300000 } { "_id" : 5, "name" : "Beck", "salary" : 82000 }
सभी दस्तावेज़ बेतरतीब ढंग से लौटाएं
यदि अनुरोधित नमूना आकार मेल खाता है, या संग्रह में दस्तावेज़ों की संख्या से बड़ा है, तो सभी दस्तावेज़ यादृच्छिक क्रम में वापस कर दिए जाते हैं।
उदाहरण:
db.employees.aggregate(
[
{
$sample: { size: 100 }
}
]
)
परिणाम:
{ "_id" : 4, "name" : "Christopher", "salary" : 45000 } { "_id" : 8, "name" : "Zoro", "salary" : 300000 } { "_id" : 5, "name" : "Beck", "salary" : 82000 } { "_id" : 2, "name" : "Sarah", "salary" : 128000 } { "_id" : 6, "name" : "Homer", "salary" : 1 } { "_id" : 9, "name" : "Xena", "salary" : 382000 } { "_id" : 3, "name" : "Fritz", "salary" : 25000 } { "_id" : 7, "name" : "Bartholomew", "salary" : 1582000 } { "_id" : 1, "name" : "Bob", "salary" : 55000 }
कैसे $sample
परिणाम की गणना करता है
$sample
चरण परिणाम उत्पन्न करने के लिए दो विधियों में से एक का उपयोग करता है। उपयोग की जाने वाली वास्तविक विधि परिदृश्य पर निर्भर करती है।
निम्न तालिका यह बताती है कि प्रत्येक परिदृश्य के लिए किस पद्धति का उपयोग किया जाता है।
परिदृश्य | परिणाम तैयार करने की विधि |
---|---|
निम्नलिखित सभी शर्तें पूरी होती हैं: - $sample पाइपलाइन का पहला चरण है - निर्दिष्ट नमूना आकार संग्रह में कुल दस्तावेजों के 5% से कम है - संग्रह में 100 से अधिक दस्तावेज़ हैं | $sample दस्तावेज़ों का चयन करने के लिए छद्म यादृच्छिक कर्सर का उपयोग करता है। |
उपरोक्त सभी शर्तें नहीं हैं मिले। | $sample दस्तावेजों की निर्दिष्ट संख्या का चयन करने के लिए एक यादृच्छिक क्रम के बाद एक संग्रह स्कैन करता है। |
डुप्लिकेट
MongoDB दस्तावेज़ चेतावनी देता है कि $sample
परिणाम सेट में एक ही दस्तावेज़ को एक से अधिक बार आउटपुट कर सकता है।