คุณสามารถใช้ update() พร้อมกับตัวดำเนินการ $ สำหรับสิ่งนี้ ให้เราสร้างคอลเลกชันที่มีเอกสารก่อน -
> db.addAFieldDemo.insertOne(... {...... "ClientName" :"Larry",... "ClientCountryName" :"US",... "ClientOtherDetails" :[... {... "ClientProjectName":"ระบบธนาคารออนไลน์"... }... ]... }... );{ "รับทราบ" :จริง "insertedId" :ObjectId("5cd44bdc2cba06f46efe9ee8")}ก่อน>ต่อไปนี้เป็นแบบสอบถามเพื่อแสดงเอกสารทั้งหมดจากคอลเลกชันโดยใช้วิธี find() -
> db.addAFieldDemo.find().pretty();สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" :ObjectId("5cd44bdc2cba06f46efe9ee8"), "ClientName" :"Larry", "ClientCountryName" :"US", "ClientOtherDetails" :[ { "ClientProjectName" :"Online Banking System" } ]}ต่อไปนี้เป็นแบบสอบถามเพื่อเพิ่มเขตข้อมูลลงในเอกสารที่ฝังอยู่ในอาร์เรย์ -
> db.addAfieldDemo.update({ClientOtherDetails:{$elemMatch:{"ClientProjectName" :"Online Banking System"}}},... {$set :{'ClientOtherDetails.$.isMarried':true}} ,true);WriteResult({ "nMatched" :1, "nUpserted" :0, "nModified" :1 })ให้เราแสดงเอกสารทั้งหมดจากคอลเลกชันข้างต้น -
> db.addAFieldDemo.find().pretty();สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" :ObjectId("5cd44bdc2cba06f46efe9ee8"), "ClientName" :"Larry", "ClientCountryName" :"US", "ClientOtherDetails" :[ { "ClientProjectName" :"Online Banking System", "isMarried" :จริง } ]}