$set ऑपरेटर से सिंगल वैल्यू फ़ील्ड को ऐरे में बदलें
किसी मौजूदा फ़ील्ड को (जो एक सिंगल वैल्यू रखता है) ऐरे में बदलने के लिए $set ऑपरेटर का उपयोग करके उस फ़ील्ड को नए ऐरे से ओवरराइट करें।
उदाहरण: संग्रह बनाना
> db.convertAFieldToAnArrayDemo.insertOne({"StudentSubject": "MongoDB"});
{ "acknowledged": true, "insertedId": ObjectId("5ce92d7778f00858fb12e91d") }
डॉक्यूमेंट देखना (अपडेट से पहले)
> db.convertAFieldToAnArrayDemo.find();
{ "_id": ObjectId("5ce92d7778f00858fb12e91d"), "StudentSubject": "MongoDB" }
फ़ील्ड को ऐरे में बदलने की क्वेरी
forEach लूप का उपयोग करके प्रत्येक डॉक्यूमेंट को प्रोसेस करें और StudentSubject को ऐरे में बदलें:
> db.convertAFieldToAnArrayDemo.find().forEach(function(myDocument) {
db.convertAFieldToAnArrayDemo.update(
{ _id: myDocument._id },
{ "$set": { "StudentSubject": [myDocument.StudentSubject] } }
);
})
परिणाम जांचना
> db.convertAFieldToAnArrayDemo.find();
{ "_id": ObjectId("5ce92d7778f00858fb12e91d"), "StudentSubject": ["MongoDB"] }
अब StudentSubject एक स्ट्रिंग के बजाय एक ऐरे है जिसमें वही मान है।
नोट: यह ऑपरेशन सभी डॉक्यूमेंट्स पर लागू होता है। बड़े संग्रहों के लिए बल्क ऑपरेशन या एग्रीगेशन पाइपलाइन (
$outया$merge) का उपयोग करना अधिक कुशल हो सकता है।