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

MongoDB: อัปเดตฟิลด์เฉพาะด้วย $set

ใช้ $set ในคำสั่ง update() เพื่ออัปเดตเฉพาะฟิลด์ที่ต้องการ โดยไม่กระทบฟิลด์อื่น สร้างคอลเลกชันตัวอย่าง:

> db.demo352.insertOne({"Name":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e55510af8647eb59e5620ba") }
> db.demo352.insertOne({"Name":"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e55510ef8647eb59e5620bb") }
> db.demo352.insertOne({"Name":"Bob"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e555112f8647eb59e5620bc") }
> db.demo352.insertOne({"Name":"Mike"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e555115f8647eb59e5620bd") }

แสดงข้อมูล:

> db.demo352.find();

อัปเดต Name จาก "David" เป็น "Robert":

> db.demo352.update({Name:"David"},{$set:{"Name":"Robert"}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

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

> db.demo352.find();

ผลลัพธ์:

{ "_id" : ObjectId("5e55510af8647eb59e5620ba"), "Name" : "Chris" }
{ "_id" : ObjectId("5e55510ef8647eb59e5620bb"), "Name" : "Robert" }
{ "_id" : ObjectId("5e555112f8647eb59e5620bc"), "Name" : "Bob" }
{ "_id" : ObjectId("5e555115f8647eb59e5620bd"), "Name" : "Mike" }

ข้อมูลเพิ่มเติม

  • $set อัปเดตเฉพาะฟิลด์ที่ระบุ ฟิลด์อื่นไม่เปลี่ยนแปลง
  • หากไม่ใช้ $set (ส่ง object ตรงๆ) จะทำ replace entire document
  • MongoDB ใหม่แนะนำ updateOne() สำหรับอัปเดต 1 เอกสาร, updateMany() สำหรับหลายเอกสาร
  • ใช้ {$set: {"field.subfield": value}} สำหรับ nested field (dot notation)