एग्रीगेशन में $toLower vs शेल लूप
MongoDB 4.0+ में एग्रीगेशन पाइपलाइन के लिए $toLower ऑपरेटर है, लेकिन सीधे अपडेट कमांड में इसका उपयोग नहीं किया जा सकता। मौजूदा दस्तावेज़ों को अपडेट करने के लिए, शेल में forEach लूप का उपयोग करके प्रत्येक दस्तावेज़ पढ़ें, मान बदलें, और save() या updateOne() से सहेजें।
उदाहरण: नमूना डेटा
> db.toLowerDemo.insertOne({"StudentId":101,"StudentName":"John"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c9b1b4515e86fd1496b38bf") }
> db.toLowerDemo.insertOne({"StudentId":102,"StudentName":"Larry"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c9b1b4b15e86fd1496b38c0") }
> db.toLowerDemo.insertOne({"StudentId":103,"StudentName":"CHris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c9b1b5115e86fd1496b38c1") }
> db.toLowerDemo.insertOne({"StudentId":104,"StudentName":"ROBERT"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c9b1b5a15e86fd1496b38c2") }
लूप के साथ लोअरकेस में अपडेट करना
> db.toLowerDemo.find().forEach(
function(doc) {
doc.StudentName = doc.StudentName.toLowerCase();
db.toLowerDemo.save(doc);
}
);
सत्यापन
> db.toLowerDemo.find().pretty();
आउटपुट:
आधुनिक विकल्प (MongoDB 4.2+):
updateManyके साथ एग्रीगेशन पाइपलाइन का उपयोग करें:db.toLowerDemo.updateMany( {}, [ { $set: { StudentName: { $toLower: "$StudentName" } } } ] );यह सर्वर-साइड पर सभी दस्तावेज़ों को कुशलता से अपडेट करता है बिना क्लाइंट-राउंडट्रिप के।