Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

MongoDB मैप-रिड्यूस लागू करना

MongoDB में मैप-रिड्यूस कार्यान्वयन

मैप-रिड्यूस बड़े डेटा वॉल्यूम को उपयोगी एग्रीगेटेड परिणामों में संघनित करने के लिए डेटा प्रोसेसिंग पैराडाइम है।

कलेक्शन बनाना

> db.demo280.insertOne({"CustomerName":"Chris","isMarried":true});
{ "acknowledged": true, "insertedId": ObjectId("5e49116edd099650a5401a62") }
> db.demo280.insertOne({"CustomerName":"Mike","isMarried":false});
{ "acknowledged": true, "insertedId": ObjectId("5e491170dd099650a5401a63") }
> db.demo280.insertOne({"CustomerName":"David","isMarried":false});
{ "acknowledged": true, "insertedId": ObjectId("5e491170dd099650a5401a64") }
> db.demo280.insertOne({"CustomerName":"Bob","isMarried":true});
{ "acknowledged": true, "insertedId": ObjectId("5e491171dd099650a5401a65") }

सभी डॉक्यूमेंट्स

> db.demo280.find();

मैप-रिड्यूस क्वेरी

> db.demo280.mapReduce(
    function() { emit(this.isMarried, true); },
    function(key, values) { return Array.sum(values); },
    {
        query: { isMarried: true },
        out: "Output"
    }
)

परिणाम


व्याख्या

  • map फंक्शन: प्रत्येक डॉक्यूमेंट के लिए emit(key, value) कॉल करता है
    • key: this.isMarried (true/false)
    • value: true (गिनती के लिए 1 के बराबर)
  • reduce फंक्शन: समान कुंजी के लिए मानों को संयोजित करता है
    • Array.sum(values): true मानों को जोड़ता है (true=1)
  • query: केवल isMarried: true वाले डॉक्यूमेंट्स प्रोसेस करता है (2 डॉक्यूमेंट्स)
  • out: "Output": परिणाम "Output" कलेक्शन में स्टोर करता है

परिणाम विश्लेषण

  • input: 2: क्वेरी से मेल खाने वाले 2 डॉक्यूमेंट्स (Chris, Bob)
  • emit: 2: 2 बार emit कॉल किया गया
  • reduce: 1: एक बार रिड्यूस चला (दोनों true के लिए)
  • output: 1: एक आउटपुट डॉक्यूमेंट (key: true, value: 2)

नोट

मैप-रिड्यूस विरलत: उपयोग किया जाता है लेकिन एग्रीगेशन पाइपलाइन ($group, $match, आदि) अधिकांश मामलों के लिए तेज और अधिक अभिव्यंजक है। मैप-रिड्यूस जटिल कस्टम लॉजिक के लिए आरक्षित रखें।

  1. - MongoDB में स्ट्रिंग तुलना कैसे लागू करें?

    MongoDB में स्ट्रिंग तुलना लागू करने के लिए $strcasecmp ऑपरेटर का उपयोग करें। यह दो स्ट्रिंग्स की केस-इनसेंसिटिव तुलना करता है। यह लौटाता है: 1 यदि पहली स्ट्रिंग दूसरी स्ट्रिंग से greater than है। 0 यदि दोनों स्ट्रिंग्स समान हैं। -1 यदि पहली स्ट्रिंग दूसरी स्ट्रिंग से less than है। आइए दस्तावेज़

  1. - MongoDB में _id फील्ड छिपाएं

    आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo575.insertOne({id:101,Information:{Name:Chris,Age:21}}); { acknowledged : true, insertedId : ObjectId(5e916a55581e9acd78b427f7) } > db.demo575.insertOne({id:102,Information:{Name:David,Age:20}}); { acknowledged : true, insertedId : ObjectId

  1. - MongoDB में मास इंसर्शन (थोक सम्मिलन)

    मास इंसर्शन के लिए MongoDB में insertMany() की अवधारणा का उपयोग करें। insertMany() एक कलेक्शन में कई डॉक्यूमेंट्स डालता है। आइए डॉक्यूमेंट्स के साथ एक कलेक्शन बनाते हैं: > db.demo729.insertMany( [ ... { BankName:HDFC Bank,cardType:Credit,CustomerName:[{Name:Chris,Age:25}]}, ... { BankName:ICICI