MongoDB में mapReduce का उपयोग करके स्ट्रिंग विभाजित करना
MongoDB में स्ट्रिंग को विभाजित करने के लिए mapReduce() का उपयोग किया जा सकता है, हालांकि आधुनिक वर्जन में एग्रीगेशन ऑपरेटर्स ($split, $arrayElemAt) अधिक कुशल हैं।
सैंपल डेटा बनाना
> db.splitString.insertOne({"StudentName":"John Smith"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e0849d925ddae1f53b62206") }
दस्तावेज़ देखना
> db.splitString.find().pretty();
आउटपुट:
mapReduce के साथ स्ट्रिंग विभाजित करना (लास्ट नेम निकालना)
> db.splitString.mapReduce( function() { var StudentLastName = this.StudentName.split(/\s/).reverse()[0].toUpperCase(); emit({ "StudentLastName": StudentLastName, "FirstObjectId": this._id }, this); }, function(){}, { "out": { "inline": 1 } } );आउटपुट:
आधुनिक विकल्प: एग्रीगेशन में $split (MongoDB 3.4+)
आउटपुट:
{ "_id" : ..., "StudentName" : "John Smith", "LastName" : "SMITH" }mapReduce vs एग्रीगेशन
| पहलू | mapReduce | एग्रीगेशन |
|---|---|---|
| परफॉर्मेंस | धीमा (JS इंजन) | तेज (नेटिव C++) |
| लचीलापन | उच्च (पूर्ण JS) | मध्यम (ऑपरेटर्स) |
| शार्डिंग | सीमित | पूर्ण समर्थन |
| अनुशंसित | जटिल लॉजिक के लिए | अधिकांश मामलों के लिए |
अन्य स्ट्रिंग ऑपरेटर्स (एग्रीगेशन)
$split: विभाजक द्वारा स्ट्रिंग विभाजित करें$substr/$substrBytes/$substrCP: सबस्ट्रिंग निकालें$concat: स्ट्रिंग्स जोड़ें$regexFind/$regexFindAll: रेगुलर एक्सप्रेशन मिलान$replaceOne/$replaceAll: स्ट्रिंग प्रतिस्थापन
नोट
उदाहरण में mapReduce का उपयोग किया गया है जो विरासत दृष्टिकोण है। नए विकास के लिए एग्रीगेशन पाइपलाइन पसंद करें।