Sử dụng parseInt() hoặc parseFloat() trong JavaScript kết hợp forEach() để chuyển đổi trường chuỗi sang số.
Ví dụ minh họa
Tạo collection convertStringToNumberDemo với EmployeeId là chuỗi:
> db.convertStringToNumberDemo.insertOne({"MaNhanVien": "101", "TenNhanVien": "Larry"});
> db.convertStringToNumberDemo.insertOne({"MaNhanVien": "1120", "TenNhanVien": "Mike"});
> db.convertStringToNumberDemo.insertOne({"MaNhanVien": "3210", "TenNhanVien": "Sam"});
Chuyển đổi
> db.convertStringToNumberDemo.find().forEach(function(doc) {
db.convertStringToNumberDemo.update(
{_id: doc._id},
{$set: {"MaNhanVien": parseInt(doc.MaNhanVien)}}
);
});
Kết quả:
{ "MaNhanVien": 101, "TenNhanVien": "Larry" }
{ "MaNhanVien": 1120, "TenNhanVien": "Mike" }
{ "MaNhanVien": 3210, "TenNhanVien": "Sam" }
Cách hiện đại (MongoDB 4.2+): Dùng updateMany() với aggregation pipeline:
db.convertStringToNumberDemo.updateMany(
{},
[{$set: {"MaNhanVien": {$toInt: "$MaNhanVien"}}}]
)
$toInt, $toLong, $toDouble, $toDecimal chuyển đổi an toàn, trả về null nếu không chuyển được (thay vì lỗi).