$type . को बदलने का एकमात्र तरीका डेटा का डेटा उस डेटा पर अपडेट करना है जहां डेटा का सही प्रकार है।
इस मामले में, ऐसा लगता है कि आप $type . को बदलने का प्रयास कर रहे हैं 1 (डबल) से 2 (स्ट्रिंग) तक।
तो बस डीबी से दस्तावेज़ लोड करें, कास्ट करें (new String(x) ) और फिर दस्तावेज़ को फिर से सहेजें।
यदि आपको इसे प्रोग्रामेटिक रूप से और पूरी तरह से शेल से करने की आवश्यकता है, तो आप find(...).forEach(function(x) {}) का उपयोग कर सकते हैं। वाक्य रचना।
नीचे दूसरी टिप्पणी के जवाब में। फ़ील्ड बदलें bad संग्रह में एक संख्या से एक स्ट्रिंग तक foo ।
db.foo.find( { 'bad' : { $type : 1 } } ).forEach( function (x) {
x.bad = new String(x.bad); // convert field to string
db.foo.save(x);
});