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

ไวยากรณ์ MongoDB สำหรับการอัพเดตวัตถุภายในอาร์เรย์ภายในเอกสาร?


สำหรับสิ่งนี้ ให้ใช้ findOneAndUpdate() ใน MongoDB วิธี findOneAndUpdate() จะอัปเดตเอกสารเดียวตามเกณฑ์การกรองและจัดเรียง

ให้เราสร้างคอลเลกชันที่มีเอกสาร -

> db.demo553.insertOne(
... {
...    id:101,
...    "Name":"John",
...    midExamDetails:
...    [
...       {"SubjectName":"MySQL","Marks":70},
...       {"SubjectName":"MongoDB","Marks":35}
...    ]
... }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e8e3da19e5f92834d7f05ed")
}

แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้วิธี find() -

> db.demo553.find();

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

{ "_id" : ObjectId("5e8e3da19e5f92834d7f05ed"), "id" : 101, "Name" : "John", "midExamDetails" : [
   { "SubjectName" : "MySQL", "Marks" : 70 },
   { "SubjectName" : "MongoDB", "Marks" : 35 } 
] }

ต่อไปนี้เป็นแบบสอบถามไวยากรณ์สำหรับการปรับปรุงวัตถุภายในอาร์เรย์ภายในเอกสาร MongoDB -

> db.demo553.findOneAndUpdate(
...    { id:101,
...       "midExamDetails.SubjectName":"MongoDB"
...    },
...    { $set:{
...       'midExamDetails.$.Marks': 97
...    }
... }
... );
{
   "_id" : ObjectId("5e8e3da19e5f92834d7f05ed"),
   "id" : 101,
   "Name" : "John",
   "midExamDetails" : [
      {
         "SubjectName" : "MySQL",
         "Marks" : 70
      },
      {
         "SubjectName" : "MongoDB",
         "Marks" : 35
      }
   ]
}

แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้วิธี find() -

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

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

{
   "_id" : ObjectId("5e8e3da19e5f92834d7f05ed"),
   "id" : 101,
   "Name" : "John",
   "midExamDetails" : [
      {
         "SubjectName" : "MySQL",
         "Marks" : 70
      },
      {
         "SubjectName" : "MongoDB",
         "Marks" : 97
      }
   ]
}