Cách duy nhất để thay đổi $type
của dữ liệu là thực hiện cập nhật dữ liệu nơi dữ liệu có đúng loại.
Trong trường hợp này, có vẻ như bạn đang cố thay đổi $type
từ 1 (đôi) đến 2 (chuỗi).
Vì vậy, chỉ cần tải tài liệu từ DB, thực hiện ép kiểu (new String(x)
) và sau đó lưu tài liệu lại.
Nếu bạn cần thực hiện việc này theo chương trình và hoàn toàn từ shell, bạn có thể sử dụng find(...).forEach(function(x) {})
cú pháp.
Để trả lời bình luận thứ hai bên dưới. Thay đổi trường bad
từ một số thành một chuỗi trong bộ sưu tập foo
.
db.foo.find( { 'bad' : { $type : 1 } } ).forEach( function (x) {
x.bad = new String(x.bad); // convert field to string
db.foo.save(x);
});