रैंडम वैल्यू के लिए मैप रिड्यूस के साथ mapReduce() कॉन्सेप्ट और Math.random() का उपयोग करें।
नमूना डेटा बनाना (मान 10 से 80)
> db.demo651.insertOne({Value:10});
> db.demo651.insertOne({Value:20});
> db.demo651.insertOne({Value:30});
> db.demo651.insertOne({Value:40});
> db.demo651.insertOne({Value:50});
> db.demo651.insertOne({Value:60});
> db.demo651.insertOne({Value:70});
> db.demo651.insertOne({Value:80});
सभी दस्तावेज़ देखना
> db.demo651.find();
{ "Value" : 10 }, { "Value" : 20 }, { "Value" : 30 }, { "Value" : 40 }, { "Value" : 50 }, { "Value" : 60 }, { "Value" : 70 }, { "Value" : 80 }
रैंडम सैंपलिंग के लिए MapReduce क्वेरी (10% संभावना)
> map = function() {
if (Math.random() < 0.1) {
emit(this._id, this);
}
}
> reduce = function(key, values) { return values; }
> db.demo651.mapReduce( map, reduce, { out: 'demo_651' } );
> db.demo_651.find();
परिणाम (रैंडम - उदाहरण में 60 मिला):
{ "_id" : ObjectId("..."), "value" : { "_id" : ObjectId("..."), "Value" : 60 } }
व्याख्या: मैप फंक्शन में Math.random() < 0.1 प्रत्येक दस्तावेज़ के लिए 10% संभावना से एमिट करता है। रिड्यूस फंक्शन केवल वैल्यू लौटाता है। आउटपुट नई कलेक्शन demo_651 में जाता है। ध्यान दें: परिणाम रैंडम है, हर बार अलग हो सकता है।