Votre approche est fondamentalement correcte.Cependant, je ne considérerais pas une telle collection comme "énorme".Vous pouvez exécuter quelque chose de similaire à partir du shell :
coll.find({}).forEach(function (doc) {
doc.flag = Math.floor((Math.random()*2)+1);
coll.save(doc);
});
Selon votre version, votre configuration et votre charge de MongoDB, cela peut prendre entre quelques minutes et plusieurs heures
Si vous souhaitez effectuer cette mise à jour en masse, utilisez certaines conditions dans votre document de requête, telles que coll.find({"aFiled" : {$gt : minVal}, "aFiled" : {$lt : maxVal}})