Jediný způsob, jak změnit $type
dat je provést aktualizaci dat tam, kde mají data správný typ.
V tomto případě to vypadá, že se pokoušíte změnit $type
od 1 (double) do 2 (řetězec).
Jednoduše tedy načtěte dokument z DB, proveďte přetypování (new String(x)
) a poté dokument znovu uložte.
Pokud to potřebujete provést programově a zcela z prostředí Shell, můžete použít find(...).forEach(function(x) {})
syntaxe.
V reakci na druhý komentář níže. Změňte pole bad
z čísla na řetězec v kolekci foo
.
db.foo.find( { 'bad' : { $type : 1 } } ).forEach( function (x) {
x.bad = new String(x.bad); // convert field to string
db.foo.save(x);
});