あなたのアプローチは基本的に正しいです。しかし、私はそのようなコレクションを「巨大な」とは見なしません。シェルから同様の何かを実行できます:
coll.find({}).forEach(function (doc) {
doc.flag = Math.floor((Math.random()*2)+1);
coll.save(doc);
});
MongoDBのバージョン、構成、および負荷によっては、これには数分から数時間かかる場合があります
この更新を一括で実行する場合は、クエリドキュメントでcoll.find({"aFiled" : {$gt : minVal}, "aFiled" : {$lt : maxVal}})