Den eneste måde at ændre $type
af dataene er at udføre en opdatering af dataene, hvor dataene har den korrekte type.
I dette tilfælde ser det ud til, at du prøver at ændre $type
fra 1 (dobbelt) til 2 (streng).
Så indlæs blot dokumentet fra DB'en, udfør castingen (new String(x)
) og gem derefter dokumentet igen.
Hvis du har brug for at gøre dette programmatisk og helt fra skallen, kan du bruge find(...).forEach(function(x) {})
syntaks.
Som svar på den anden kommentar nedenfor. Skift feltet bad
fra et tal til en streng 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);
});