इनपुट एलिमेंट से दूसरा एलिमेंट प्राप्त करने के लिए mapReduce() का उपयोग करें। मैप-रिड्यूस बड़ी मात्रा में डेटा को उपयोगी एग्रीगेटेड परिणामों में संघनित करने के लिए एक डेटा प्रोसेसिंग पैराडाइम है।
नमूना डेटा बनाना
> db.demo621.insert({ _id: 101, Name1: "John", Name2: "John" });
> db.demo621.insert({ _id: 102, Name1: "Bob", Name2: "John" });
> db.demo621.insert({ _id: 103, Name1: "Chris", Name2: "John" });
> db.demo621.insert({ _id: 104, Name1: "Sam", Name2: "John" });
सभी दस्तावेज़ देखना
> db.demo621.find();
{ "_id" : 101, "Name1" : "John", "Name2" : "John" }
{ "_id" : 102, "Name1" : "Bob", "Name2" : "John" }
{ "_id" : 103, "Name1" : "Chris", "Name2" : "John" }
{ "_id" : 104, "Name1" : "Sam", "Name2" : "John" }
दूसरा एलिमेंट प्राप्त करने के लिए MapReduce क्वेरी
> db.demo621.mapReduce(
function () {
track++;
var actualId = this._id;
delete this._id;
if ( track % div == 0 )
emit(actualId, this );
},
function() {},
{ "scope": { "track": 0, "div": 2 }, "out": { "inline": 1 } }
)
परिणाम (हर दूसरा दस्तावेज़ - 102 और 104):
{ "results" : [ { "_id" : 102, "value" : { "Name1" : "Bob", "Name2" : "John" } }, { "_id" : 104, "value" : { "Name1" : "Sam", "Name2" : "John" } } ], "timeMillis" : 48, "counts" : { "input" : 4, "emit" : 2, "reduce" : 0, "output" : 2 }, "ok" : 1 }
व्याख्या: scope में track काउंटर और div: 2 सेट करके, हर दूसरा दस्तावेज़ (जब track % 2 == 0) एमिट होता है। यह वैकल्पिक दस्तावेज़ प्राप्त करने का एक तरीका है।