ใช้ $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)