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