ใช้ $elemMatch กับ $set
ให้เราสร้างคอลเลกชันที่มีเอกสารก่อน -
> dbkeyValueDemoinsertOne( { "_id" : new ObjectId(), "CustomerDetails" : [ { "Name" : "Chris", "Age" :24, }, { "Name" : "Robert", "Age" :29, }, { "Name" : "David", "Age" :35, } ] } ); { "acknowledged" : true, "insertedId" : ObjectId("5cefcf36ef71edecf6a1f6bf") }
ต่อไปนี้เป็นแบบสอบถามเพื่อแสดงเอกสารทั้งหมดจากคอลเลกชันโดยใช้วิธี find() -
> dbkeyValueDemofind()pretty();
ผลลัพธ์
{ "_id" : ObjectId("5cefcf36ef71edecf6a1f6bf"), "CustomerDetails" : [ { "Name" : "Chris", "Age" : 24 }, { "Name" : "Robert", "Age" : 29 }, { "Name" : "David", "Age" : 35 } ] }
นี่คือข้อความค้นหาเพื่ออัปเดตค่าคีย์โดยที่คีย์อื่นมีค่าเท่ากับค่าบางอย่าง -
> dbkeyValueDemoupdate( {"CustomerDetails":{"$elemMatch":{"Name":"David"}}}, {"$set":{"CustomerDetails$Age":56}}); WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 } )
ให้เราตรวจสอบเอกสารอีกครั้ง -
> dbkeyValueDemofind()pretty();
ผลลัพธ์
{ "_id" : ObjectId("5cefcf36ef71edecf6a1f6bf"), "CustomerDetails" : [ { "Name" : "Chris", "Age" : 24 }, { "Name" : "Robert", "Age" : 29 }, { "Name" : "David", "Age" : 56 } ] }