$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);
});