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

วิธีอัปเดตระเบียน (Record) ใน MongoDB


ใช้ update() พร้อม $set และระบุ _id

การอัปเดตเอกสารใน MongoDB ควรทำโดยระบุ _id เพื่อความแม่นยำ และใช้ operator $set เพื่ออัปเดตเฉพาะฟิลด์ที่ต้องการ

ตัวอย่างข้อมูล

> db.demo458.insertOne({ _id: 101, "Name": "David" });
> db.demo458.insertOne({ _id: 102, "Name": "Chris" });
> db.demo458.insertOne({ _id: 103, "Name": "Bob" });

Query อัปเดตชื่อของ _id: 102

> db.demo458.update({ _id: 102 }, { $set: { "Name": "David Miller" } });
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })

ผลลัพธ์

{ "_id": 101, "Name": "David" }
{ "_id": 102, "Name": "David Miller" }
{ "_id": 103, "Name": "Bob" }

แนวทางปฏิบัติที่ดี (Best Practices)

  • ใช้ _id เสมอ - ป้องกันอัปเดตเอกสารผิด (หากมีชื่อซ้ำ)
  • ใช้ $set - อัปเดตเฉพาะฟิลด์ที่ระบุ ไม่ทับฟิลด์อื่น
  • ใช้ updateOne()/updateMany() - แทน update() ใน MongoDB 3.2+
  • ตรวจสอบ nModified - ยืนยันว่ามีการเปลี่ยนแปลงจริง

รูปแบบใหม่ (MongoDB 3.2+)

// อัปเดตหนึ่งเอกสาร
db.demo458.updateOne({ _id: 102 }, { $set: { "Name": "David Miller" } });

// อัปเดตหลายเอกสาร
db.demo458.updateMany({ "Name": "David" }, { $set: { "Name": "David Miller" } });

Operator อัปเดตอื่นๆ

  • $inc - เพิ่ม/ลดค่าตัวเลข
  • $unset - ลบฟิลด์
  • $rename - เปลี่ยนชื่อฟิลด์
  • $setOnInsert - ตั้งค่าเฉพาะตอน upsert