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

อัปเดต Child Objects ใน MongoDB ด้วย $set

ใช้ $set พร้อม dot notation เพื่ออัปเดตฟิลด์ในออบเจ็กต์ลูก (child object/embedded document) สร้างคอลเลกชันตัวอย่าง:

> db.demo21.insertOne({"StudentId":"STU-101","StudentDetails":{"StudentName":"Chris","StudentAge":21}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e14be8922d07d3b95082e6f") }

แสดงข้อมูล:

> db.demo21.find().pretty();

อัปเดต StudentName จาก "Chris" เป็น "Robert":

> db.demo21.update({"StudentId":'STU-101'},{$set:{'StudentDetails.StudentName':'Robert'}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

ตรวจสอบผลลัพธ์:

> db.demo21.find().pretty();

ผลลัพธ์:

{ "_id" : ObjectId("5e14be8922d07d3b95082e6f"), "StudentId" : "STU-101", "StudentDetails" : { "StudentName" : "Robert", "StudentAge" : 21 } }

จุดสำคัญ

  • StudentDetails.StudentName ใช้ dot notation เข้าถึงฟิลด์ใน embedded document
  • $set อัปเดตเฉพาะฟิลด์ที่ระบุ ฟิลด์อื่น (เช่น StudentAge) คงค่าเดิม
  • หากไม่ใช้ $set จะทำการ replace ทั้ง embedded document
  • MongoDB ใหม่แนะนำให้ใช้ updateOne() แทน update()