แปลง 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 ให้ถูกต้องตั้งแต่แรก