Jedyny sposób na zmianę $type
danych jest wykonanie aktualizacji danych, w przypadku których dane mają prawidłowy typ.
W tym przypadku wygląda na to, że próbujesz zmienić $type
od 1 (podwójny) do 2 (ciąg).
Więc po prostu załaduj dokument z bazy danych, wykonaj rzutowanie (new String(x)
), a następnie ponownie zapisz dokument.
Jeśli chcesz to zrobić programowo i całkowicie z powłoki, możesz użyć find(...).forEach(function(x) {})
składnia.
W odpowiedzi na drugi komentarz poniżej. Zmień pole bad
od liczby do ciągu w kolekcji foo
.
db.foo.find( { 'bad' : { $type : 1 } } ).forEach( function (x) {
x.bad = new String(x.bad); // convert field to string
db.foo.save(x);
});