MongoDB में forEach() से फील्ड्स कनकैटनेट करना
MongoDB क्वेरी रिजल्ट्स में फील्ड्स को जोड़कर (कनकैटनेट करके) नया फील्ड बनाने के लिए forEach() का उपयोग करें।
उदाहरण: कलेक्शन और डॉक्यूमेंट्स बनाना
> db.concatenateDemo.insertOne({"Name":"John","Age":21});
{ "acknowledged" : true, "insertedId" : ObjectId("5cc80dd88f9e6ff3eb0ce448") }
> db.concatenateDemo.insertOne({"Name":"Carol","Age":23});
{ "acknowledged" : true, "insertedId" : ObjectId("5cc80de18f9e6ff3eb0ce449") }
सभी डॉक्यूमेंट्स देखना
> db.concatenateDemo.find().pretty();
आउटपुट:
{ "_id" : ObjectId("5cc80dd88f9e6ff3eb0ce448"), "Name" : "John", "Age" : 21 }
{ "_id" : ObjectId("5cc80de18f9e6ff3eb0ce449"), "Name" : "Carol", "Age" : 23 }
Name और Age कनकैटनेट करके नया फील्ड बनाना
> db.concatenateDemo.find().forEach( function (result) {
... result.NameAndAge = result.Name + ' ' + result.Age;
... printjson(result);
... } );
आउटपुट:
{ "_id" : ObjectId("5cc80dd88f9e6ff3eb0ce448"), "Name" : "John", "Age" : 21, "NameAndAge" : "John 21" }
{ "_id" : ObjectId("5cc80de18f9e6ff3eb0ce449"), "Name" : "Carol", "Age" : 23, "NameAndAge" : "Carol 23" }
महत्वपूर्ण नोट: यह केवल क्लाइंट-साइड डिस्प्ले के लिए है - डेटाबेस में डॉक्यूमेंट्स अपडेट नहीं होते।
डेटाबेस में परमानेंटली सेव करने के लिए:
db.concatenateDemo.find().forEach(function(doc) {
db.concatenateDemo.updateOne(
{ _id: doc._id },
{ $set: { NameAndAge: doc.Name + " " + doc.Age } }
);
});
एग्रीगेशन विकल्प (MongoDB 3.4+):
db.concatenateDemo.aggregate([
{ $project: {
Name: 1, Age: 1,
NameAndAge: { $concat: ["$Name", " ", { $toString: "$Age" }] }
}}
]);
यह सर्वर-साइड प्रोसेसिंग करता है और बड़े डेटासेट्स के लिए अधिक कुशल है।