उपरोक्त कोड काम करता है, मेरा डेटा खराब था। जैसा कि मैंने ऊपर टिप्पणी में लिखा था, कुछ दस्तावेजों में एक स्ट्रिंग (बूलियन नहीं) के रूप में isFoo था और इसलिए मैं मिश्रित परिणाम देख रहा था।
मुझे फ़ील्ड के प्रकार को स्ट्रिंग से बूलियन में बदलना पड़ा इसलिए मैंने यह कोशिश की:
db.users.find( { 'isFoo' : { $exists : true } } ).forEach( function (x) { x.isFoo = new Boolean(x.isFoo); db.users.save(x); });
लेकिन इसने सभी isFoo फ़ील्ड को ऑब्जेक्ट में बदल दिया।
यह देखते हुए कि मैं इस मुद्दे से निपटने के लिए वास्तव में थक गया था, मैंने सभी isFoo फ़ील्ड को गलत पर सेट करने के लिए निम्नलिखित का उपयोग किया और मैन्युअल रूप से परिवर्तनों को संभालें।
db.users.find( { 'isFoo' : { $exists : true } } ).forEach( function (x) { x.isFoo = false; db.users.save(x); });
यह बहुत कष्टप्रद था।