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

MongoDB: อัปเดตอาร์เรย์ Subdocument ด้วย $set และ Positional $


สร้างคอลเลกชันตัวอย่าง

> db.demo134.insertOne({"EmployeeId":101,"EmployeeDetails":[{"EmployeeName":"Chris","EmployeeAge":27},{"EmployeeName":"Bob","EmployeeAge":28}]});
{ "acknowledged": true, "insertedId": ObjectId("5e319b2f68e7f832db1a7f7c") }
> db.demo134.insertOne({"EmployeeId":102,"EmployeeDetails":[{"EmployeeName":"David","EmployeeAge":24},{"EmployeeName":"Carol","EmployeeAge":29}]});
{ "acknowledged": true, "insertedId": ObjectId("5e319b4468e7f832db1a7f7d") }

แสดงข้อมูล

> db.demo134.find().pretty();
{ "_id": ObjectId("5e319b2f68e7f832db1a7f7c"), "EmployeeId": 101, "EmployeeDetails": [ { "EmployeeName": "Chris", "EmployeeAge": 27 }, { "EmployeeName": "Bob", "EmployeeAge": 28 } ] }
{ "_id": ObjectId("5e319b4468e7f832db1a7f7d"), "EmployeeId": 102, "EmployeeDetails": [ { "EmployeeName": "David", "EmployeeAge": 24 }, { "EmployeeName": "Carol", "EmployeeAge": 29 } ] }

คิวรี Update: กรอง EmployeeId=101 และ EmployeeDetails.EmployeeName=Chris แล้ว $set

> db.demo134.update(
  {
    "EmployeeId": 101,
    "EmployeeDetails.EmployeeName": "Chris"
  },
  {
    $set: { "EmployeeDetails.$.EmployeeName": "Robert" }
  }
);
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })

ผลลัพธ์: Chris กลายเป็น Robert ใน EmployeeId 101

> db.demo134.find().pretty();
{ "_id": ObjectId("5e319b2f68e7f832db1a7f7c"), "EmployeeId": 101, "EmployeeDetails": [ { "EmployeeName": "Robert", "EmployeeAge": 27 }, { "EmployeeName": "Bob", "EmployeeAge": 28 } ] }
{ "_id": ObjectId("5e319b4468e7f832db1a7f7d"), "EmployeeId": 102, "EmployeeDetails": [ { "EmployeeName": "David", "EmployeeAge": 24 }, { "EmployeeName": "Carol", "EmployeeAge": 29 } ] }