1. ホーム
  2. mongodb

[解決済み] フィールドの種類を変更するには?

2022-04-20 01:16:06

質問

mongo シェルからフィールドのタイプを変更しようとしています。

こんなことをやっています...

db.meta.update(
  {'fields.properties.default': { $type : 1 }}, 
  {'fields.properties.default': { $type : 2 }}
)

でも、うまくいかないんです!

どうすればいいですか?

を変更する唯一の方法は $type のデータに対して更新を行い、データが正しい型を持つようにすることです。

この場合、どうやら $type 1 (double) から 2 (string) に変更する。 .

そのため、単純にDBからドキュメントをロードし、キャスト( new String(x) )し、再度ドキュメントを保存します。

これをプログラム的に、完全にシェルから行う必要がある場合は find(...).forEach(function(x) {}) 構文があります。


下記2番目のコメントに対して。フィールドを変更する bad を数値から文字列に変更し、コレクション foo .

db.foo.find( { 'bad' : { $type : 1 } } ).forEach( function (x) {   
  x.bad = new String(x.bad); // convert field to string
  db.foo.save(x);
});