Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Chuyển đổi chuỗi sang số nguyên trong MongoDB

Để 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 updateMany vớ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.