Il tuo approccio è sostanzialmente corretto. Tuttavia non considererei una tale raccolta come "enorme" Puoi eseguire qualcosa di simile dalla shell:
coll.find({}).forEach(function (doc) {
doc.flag = Math.floor((Math.random()*2)+1);
coll.save(doc);
});
A seconda della versione, della configurazione e del carico di MongoDB, l'operazione potrebbe richiedere da pochi minuti a diverse ore
Se desideri eseguire questo aggiornamento in blocco, utilizza alcune condizioni nel documento di query, ad esempio coll.find({"aFiled" : {$gt : minVal}, "aFiled" : {$lt : maxVal}})