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

MongoDB syntax สำหรับอัปเดตออบเจกต์ภายในอาร์เรย์ในเอกสาร


สำหรับเรื่องนี้ ให้ใช้ findOneAndUpdate() ใน MongoDB เมธอด findOneAndUpdate() จะอัปเดตเอกสารเดียวตาม filter และ sort criteria มาสร้างคอลเลกชันพร้อมเอกสารกันก่อน

> 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 } ] }

คำสั่งสำหรับ syntax การอัปเดตออบเจกต์ภายในอาร์เรย์ในเอกสาร 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       }    ] }