A única maneira de alterar o
$type
dos dados é realizar uma atualização nos dados onde os dados têm o tipo correto. Nesse caso, parece que você está tentando alterar o
$type
de 1 (duplo) a 2 (string). Então, simplesmente carregue o documento do banco de dados, execute o cast (
new String(x)
) e, em seguida, salve o documento novamente. Se você precisar fazer isso de forma programática e inteiramente a partir do shell, poderá usar o
find(...).forEach(function(x) {})
sintaxe. Em resposta ao segundo comentário abaixo. Altere o campo
bad
de um número para uma string na coleção foo
. db.foo.find( { 'bad' : { $type : 1 } } ).forEach( function (x) {
x.bad = new String(x.bad); // convert field to string
db.foo.save(x);
});