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