Đoạn mã trên hoạt động, dữ liệu của tôi bị lỗi. Như tôi đã viết trong nhận xét ở trên, một số tài liệu có isFoo dưới dạng Chuỗi (không phải Boolean) và đó là lý do tại sao tôi thấy kết quả hỗn hợp.
Tôi đã phải thay đổi loại trường từ String thành Boolean nên tôi đã thử điều này:
db.users.find( { 'isFoo' : { $exists : true } } ).forEach( function (x) { x.isFoo = new Boolean(x.isFoo); db.users.save(x); });
Nhưng điều đó chỉ biến tất cả các trường isFoo thành Đối tượng.
Thấy rằng tôi đã thực sự mệt mỏi với việc giải quyết vấn đề này, tôi chỉ sử dụng cách sau để đặt tất cả các trường isFoo thành false và chỉ xử lý các thay đổi theo cách thủ công.
db.users.find( { 'isFoo' : { $exists : true } } ).forEach( function (x) { x.isFoo = false; db.users.save(x); });
Điều này rất khó chịu.