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

อัปเดตค่าของฟิลด์หนึ่ง เมื่ออีกฟิลด์หนึ่งมีค่าเท่ากับเงื่อนไขใน MongoDB

ใช้ $elemMatch ร่วมกับ $set เพื่ออัปเดตฟิลด์ในออบเจกต์ที่อยู่ในอาร์เรย์ โดยจับคู่จากฟิลด์อื่น เริ่มต้นด้วยการสร้างคอลเลกชันตัวอย่าง:

> db.keyValueDemo.insertOne(
  {
    "_id" : new ObjectId(),
    "CustomerDetails" : [
      { "Name" : "Chris", "Age" :24 },
      { "Name" : "Robert", "Age" :29 },
      { "Name" : "David", "Age" :35 }
    ]
  }
);
{ "acknowledged" : true, "insertedId" : ObjectId("5cefcf36ef71edecf6a1f6bf") }

แสดงเอกสาร:

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

คิวรี่อัปเดต Age เป็น 56 สำหรับลูกค้าที่ Name เป็น "David":

> db.keyValueDemo.update(
  {"CustomerDetails":{"$elemMatch":{"Name":"David"}}},
  {"$set":{"CustomerDetails.$.Age":56}}
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

ตรวจสอบเอกสารอีกครั้ง:

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

คำอธิบาย: $elemMatch จับคู่ออบเจกต์ในอาร์เรย์ CustomerDetails ที่มี Name = "David" จากนั้น $set พร้อม CustomerDetails.$.Age จะอัปเดตเฉพาะ Age ของออบเจกต์ที่จับคู่ได้