フィールドのタイプを変更するにはどうすればいいですか? 質問する

フィールドのタイプを変更するにはどうすればいいですか? 質問する

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

私はこれをやっています...

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

しかし、うまくいきません!

ベストアンサー1

データを変更する唯一の方法は、$typeデータが正しいタイプであるデータに対して更新を実行することです。

この場合、あなたは$type 1 (倍精度) から 2 (文字列)

したがって、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);
});

おすすめ記事