MongoDB में JavaScript trim() का उपयोग करके स्ट्रिंग्स से व्हाइटस्पेस हटाना
MongoDB में एक बिल्ट-इन ट्रिम फंक्शन नहीं है जो सीधे क्वेरी भाषा में उपलब्ध हो (MongoDB 4.4 से पहले)। हालांकि, आप forEach() के साथ JavaScript के .trim() मेथड का उपयोग करके डॉक्यूमेंट्स को पुनरावृत्त कर सकते हैं और स्ट्रिंग फील्ड्स को अपडेट कर सकते हैं।
नमूना डेटा बनाना
> db.removingWhiteSpaceDemo.insertOne({"Title":" Introduction to java "});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd66f387924bb85b3f4894c") }
अपडेट से पहले डॉक्यूमेंट देखना
> db.removingWhiteSpaceDemo.find();
आउटपुट:
{ "_id" : ObjectId("5cd66f387924bb85b3f4894c"), "Title" : " Introduction to java " }
forEach() के साथ व्हाइटस्पेस हटाना
> db.removingWhiteSpaceDemo.find({}, { "Title": 1 }).forEach(function(myDocument) {
myDocument.Title = myDocument.Title.trim();
db.removingWhiteSpaceDemo.update(
{ "_id": myDocument._id },
{ "$set": { "Title": myDocument.Title } }
);
});
परिणाम वेरिफाई करना
> db.removingWhiteSpaceDemo.find();
आउटपुट:
{ "_id" : ObjectId("5cd66f387924bb85b3f4894c"), "Title" : "Introduction to java" }
व्याख्या
find({}, { Title: 1 })- केवल _id और Title फील्ड प्रोजेक्ट करता है।forEach()- प्रत्येक डॉक्यूमेंट पर पुनरावृति करता है।.trim()- JavaScript स्ट्रिंग मेथड जो लीडिंग/ट्रेलिंग व्हाइटस्पेस हटाता है।update() के साथ $set- डेटाबेस में साफ किया गया मान सहेजता है।
आधुनिक विकल्प (MongoDB 4.4+)
MongoDB 4.4 से शुरू होकर, आप एग्रीगेशन पाइपलाइन में $trim ऑपरेटर का उपयोग कर सकते हैं:
db.collection.aggregate([
{ $set: { Title: { $trim: { input: "$Title" } } } },
{ $merge: { into: "collection" } }
]);
महत्वपूर्ण विचार
forEach()दृष्टिकोण क्लाइंट-साइड पर प्रत्येक डॉक्यूमेंट को प्रोसेस करता है - बड़े कलेक्शन के लिए धीमा।- उत्पादन वातावरण के लिए, सर्वर-साइड प्रोसेसिंग के लिए
$trim(MongoDB 4.4+) या बल्क ऑपरेशन्स का उपयोग करें। - बड़े पैमाने पर अपडेट चलाने से पहले हमेशा बैकअप लें या टेस्ट कलेक्शन पर वेरिफाई करें।