MongoDB में forEach() का उपयोग करके एक फील्ड का मान दूसरे फील्ड से कॉपी करना
MongoDB में किसी मौजूदा फील्ड का मान दूसरे फील्ड में कॉपी करने के लिए forEach() लूप के साथ update() या save() का उपयोग किया जा सकता है।
उदाहरण: संग्रह और दस्तावेज़ बनाना
> db.demo51.insert({"Name1":"Chris","Name":"David","Age":24});
WriteResult({ "nInserted" : 1 })
> db.demo51.insert({"Name1":"Carol","Name":"Mike","Age":22});
WriteResult({ "nInserted" : 1 })
> db.demo51.insert({"Name1":"Sam","Name":"Bob","Age":26});
WriteResult({ "nInserted" : 1 })
दस्तावेज़ देखना
> db.demo51.find();
आउटपुट:
{ "_id" : ObjectId("5e27108ccfb11e5c34d8990d"), "Name1" : "Chris", "Name" : "David", "Age" : 24 }
{ "_id" : ObjectId("5e27108dcfb11e5c34d8990e"), "Name1" : "Carol", "Name" : "Mike", "Age" : 22 }
{ "_id" : ObjectId("5e27108ecfb11e5c34d8990f"), "Name1" : "Sam", "Name" : "Bob", "Age" : 26 }
फील्ड मान कॉपी करने के लिए क्वेरी
> db.demo51.find().forEach( function (d) {
d.Name1 = d.Name;
db.demo51.save(d);
});
अपडेट के बाद दस्तावेज़ देखना
> db.demo51.find();
आउटपुट:
{ "_id" : ObjectId("5e27108ccfb11e5c34d8990d"), "Name1" : "David", "Name" : "David", "Age" : 24 }
{ "_id" : ObjectId("5e27108dcfb11e5c34d8990e"), "Name1" : "Mike", "Name" : "Mike", "Age" : 22 }
{ "_id" : ObjectId("5e27108ecfb11e5c34d8990f"), "Name1" : "Bob", "Name" : "Bob", "Age" : 26 }
आधुनिक विकल्प (MongoDB 4.2+):
एग्रीगेशन पाइपलाइन के साथ updateMany() का उपयोग करके अधिक कुशलता से:
db.demo51.updateMany(
{},
[{ $set: { Name1: "$Name" } }]
)
यह तरीका एटॉमिक है और बड़े संग्रह के लिए बेहतर प्रदर्शन देता है।