อัปเดตค่าเฉพาะฟิลด์ใน MongoDB โดยใช้ update() และ $set
บทความนี้สาธิตวิธีการอัปเดตค่าเฉพาะฟิลด์ที่ต้องการในเอกสาร MongoDB โดยใช้เมธอด update() ร่วมกับออปเจอเตอร์ $set ซึ่งจะเปลี่ยนแปลงเฉพาะฟิลด์ที่ระบุเท่านั้น
ขั้นตอนที่ 1: สร้าง Collection และเพิ่มข้อมูลตัวอย่าง
สร้าง collection ชื่อ demo201 และเพิ่มเอกสาร 3 รายการ
> db.demo201.insertOne({"ClientName":"Chris Brown","ClientAge":26});
{ "acknowledged": true, "insertedId": ObjectId("5e3c39ca03d395bdc21346e5") }
> db.demo201.insertOne({"ClientName":"David Miller","ClientAge":35});
{ "acknowledged": true, "insertedId": ObjectId("5e3c39d403d395bdc21346e6") }
> db.demo201.insertOne({"ClientName":"Carol Taylor","ClientAge":28});
{ "acknowledged": true, "insertedId": ObjectId("5e3c39e603d395bdc21346e7") }
ขั้นตอนที่ 2: แสดงข้อมูลทั้งหมด
> db.demo201.find();
ผลลัพธ์:
{ "_id": ObjectId("5e3c39ca03d395bdc21346e5"), "ClientName": "Chris Brown", "ClientAge": 26 }
{ "_id": ObjectId("5e3c39d403d395bdc21346e6"), "ClientName": "David Miller", "ClientAge": 35 }
{ "_id": ObjectId("5e3c39e603d395bdc21346e7"), "ClientName": "Carol Taylor", "ClientAge": 28 }
ขั้นตอนที่ 3: อัปเดตค่าเฉพาะฟิลด์ ClientName โดยใช้ $set
อัปเดตเอกสารที่มี ClientAge: 35 ให้เปลี่ยน ClientName เป็น "John Doe" โดยใช้ {multi: true} เพื่ออัปเดตทุกเอกสารที่ตรงเงื่อนไข (แม้ในที่นี้จะมีเพียง 1 รายการ)
> db.demo201.update(
{"ClientAge": 35},
{$set: {"ClientName": "John Doe"}},
{multi: true}
);
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })
ขั้นตอนที่ 4: ตรวจสอบผลลัพธ์หลังอัปเดต
> db.demo201.find();
ผลลัพธ์:
{ "_id": ObjectId("5e3c39ca03d395bdc21346e5"), "ClientName": "Chris Brown", "ClientAge": 26 }
{ "_id": ObjectId("5e3c39d403d395bdc21346e6"), "ClientName": "John Doe", "ClientAge": 35 }
{ "_id": ObjectId("5e3c39e603d395bdc21346e7"), "ClientName": "Carol Taylor", "ClientAge": 28 }
สรุป: การใช้ $set ภายใน update() ช่วยให้สามารถแก้ไขเฉพาะฟิลด์ที่ต้องการได้อย่างปลอดภัย โดยไม่กระทบฟิลด์อื่นๆ ในเอกสารเดียวกัน