Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

การแปลงสตริงตัวเลขเป็นตัวเลขใน MongoDB ด้วย parseInt()

แปลง String เป็น Number ใน MongoDB ด้วย parseInt()

บทความนี้สาธิตวิธีการแปลงค่าที่เก็บเป็น String (เช่น "50", "2350") ให้เป็น Number จริงใน MongoDB โดยใช้ parseInt() ในฟังก์ชัน forEach() ร่วมกับ save()

ขั้นตอนที่ 1: สร้าง Collection และเพิ่มข้อมูลตัวอย่าง

> db.demo208.insertOne({ "value": "50" });
{ "acknowledged": true, "insertedId": ObjectId("5e3d92d803d395bdc21346f6") }
> db.demo208.insertOne({ "value": "2350" });
{ "acknowledged": true, "insertedId": ObjectId("5e3d92dd03d395bdc21346f7") }

ขั้นตอนที่ 2: แสดงข้อมูลทั้งหมด (ก่อนแปลง)

> db.demo208.find();

ผลลัพธ์: ค่าเป็น String

{ "_id": ObjectId("5e3d92d803d395bdc21346f6"), "value": "50" }
{ "_id": ObjectId("5e3d92dd03d395bdc21346f7"), "value": "2350" }

ขั้นตอนที่ 3: ใช้ forEach() และ parseInt() แปลงค่า แล้ว save()

> db.demo208.find().forEach(function(doc) {
    doc.value = parseInt(doc.value);
    db.demo208.save(doc);
});

ขั้นตอนที่ 4: ตรวจสอบผลลัพธ์หลังแปลง

> db.demo208.find();

ผลลัพธ์: ค่าเป็น Number แล้ว

{ "_id": ObjectId("5e3d92d803d395bdc21346f6"), "value": 50 }
{ "_id": ObjectId("5e3d92dd03d395bdc21346f7"), "value": 2350 }

สรุป: วิธีนี้เหมาะสำหรับการ Migration ข้อมูล (Data Migration) แบบครั้งเดียว สำหรับการใช้งานปกติ ควรใช้ $toInt ใน Aggregation Pipeline (MongoDB 4.0+) หรือกำหนด Schema Validation ให้ถูกต้องตั้งแต่แรก