La seule façon de changer le $type
des données consiste à effectuer une mise à jour sur les données lorsque les données ont le type correct.
Dans ce cas, il semble que vous essayez de modifier le $type
de 1 (double) à 2 (chaîne).
Il suffit donc de charger le document depuis la base de données, d'effectuer le cast (new String(x)
) puis enregistrez à nouveau le document.
Si vous avez besoin de le faire par programme et entièrement à partir du shell, vous pouvez utiliser le find(...).forEach(function(x) {})
syntaxe.
En réponse au deuxième commentaire ci-dessous. Changez le champ bad
d'un nombre à une chaîne dans la collection foo
.
db.foo.find( { 'bad' : { $type : 1 } } ).forEach( function (x) {
x.bad = new String(x.bad); // convert field to string
db.foo.save(x);
});