私はmongodbに600万を超えるドキュメントコレクションを持っています。そして、そのフィールドの1つ(以下の例ではfield1とfield2)は文字列値(mongodbのタイプ2)です。
私の問題は、それらをfloat値に解析したいということです(すべての値は parseFloat可能です)。このスニペットはSOで見つかりました。しかし、6Mのドキュメントコレクションを処理するための優れたソリューションではないようです。
db.collection.find({field1: {$type:1}}).forEach(function(data) {
db.collection.update(
{_id:data._id},
{$set:{
field1: parseFloat(data.field1),
field2: parseFloat(data.field2)}
}
)
})
サーバーの速度を落とさずに2つのフィールドを変換する方法はありますか?
db.collection.getIndexes()とdb.collection.getIndexKeys()を使用すると、2つのフィールドにインデックスが付けられます。