MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment changer le type d'un champ ?

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);
});