Twoje podejście jest w zasadzie poprawne. Nie uważałbym jednak takiej kolekcji za "ogromną" Możesz uruchomić coś podobnego z powłoki:
coll.find({}).forEach(function (doc) {
doc.flag = Math.floor((Math.random()*2)+1);
coll.save(doc);
});
W zależności od wersji MongoDB, konfiguracji i ładowania może to zająć od kilku minut do kilku godzin
Jeśli chcesz wykonać tę aktualizację zbiorczo, użyj niektórych warunków w dokumencie zapytania, takich jak coll.find({"aFiled" : {$gt : minVal}, "aFiled" : {$lt : maxVal}})