Det enda sättet att ändra $type
av data är att utföra en uppdatering av data där data har rätt typ.
I det här fallet ser det ut som att du försöker ändra $type
från 1 (dubbel) till 2 (sträng).
Så ladda helt enkelt dokumentet från DB, utför casten (new String(x)
) och spara sedan dokumentet igen.
Om du behöver göra detta programmatiskt och helt från skalet kan du använda find(...).forEach(function(x) {})
syntax.
Som svar på den andra kommentaren nedan. Ändra fältet bad
från ett nummer till en sträng i samlingen foo
.
db.foo.find( { 'bad' : { $type : 1 } } ).forEach( function (x) {
x.bad = new String(x.bad); // convert field to string
db.foo.save(x);
});