Để chuyển đổi trường kiểu string sang int, dùng hàm parseInt() trong vòng lặp forEach() trên cursor, sau đó save() lại tài liệu.
Tạo collection với giá trị string:
> db.demo369.insertOne({"Price":"1000000"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e57e2e32ae06a1609a00aed") }
> db.demo369.insertOne({"Price":"1747864"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e57e2e92ae06a1609a00aee") }
> db.demo369.insertOne({"Price":"19548575"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e57e2ee2ae06a1609a00aef") }
Xem dữ liệu (Price là string):
> db.demo369.find();
{ "_id" : ObjectId("5e57e2e32ae06a1609a00aed"), "Price" : "1000000" }
{ "_id" : ObjectId("5e57e2e92ae06a1609a00aee"), "Price" : "1747864" }
{ "_id" : ObjectId("5e57e2ee2ae06a1609a00aef"), "Price" : "19548575" }
Chuyển đổi và lưu lại:
> db.demo369.find().forEach( function (d) {
d.Price= parseInt(d.Price);
db.demo369.save(d);
});
Kết quả (Price thành number):
> db.demo369.find();
Cách hiện đại (MongoDB 4.2+): Dùng
updateManyvới pipeline:db.demo369.updateMany( {}, [{ $set: { Price: { $toInt: "$Price" } } }] )Cách này hiệu quả hơn, chạy server-side, không cần vòng lặp client-side.