L'unico modo per cambiare il $type
dei dati è eseguire un aggiornamento sui dati in cui i dati hanno il tipo corretto.
In questo caso, sembra che tu stia cercando di cambiare il $type
da 1 (doppio) a 2 (stringa).
Quindi carica semplicemente il documento dal DB, esegui il cast (new String(x)
) e quindi salvare nuovamente il documento.
Se hai bisogno di farlo a livello di codice e interamente dalla shell, puoi usare find(...).forEach(function(x) {})
sintassi.
In risposta al secondo commento qui sotto. Modifica il campo bad
da un numero a una stringa nella raccolta foo
.
db.foo.find( { 'bad' : { $type : 1 } } ).forEach( function (x) {
x.bad = new String(x.bad); // convert field to string
db.foo.save(x);
});