Sử dụng $ elemMatch thu thập thông tin này với $ set
Trước tiên, hãy để chúng tôi tạo một bộ sưu tập với các tài liệu -
> dbkeyValueDemoinsertOne( { "_id" : new ObjectId(), "CustomerDetails" : [ { "Name" : "Chris", "Age" :24, }, { "Name" : "Robert", "Age" :29, }, { "Name" : "David", "Age" :35, } ] } ); { "acknowledged" : true, "insertedId" : ObjectId("5cefcf36ef71edecf6a1f6bf") }
Sau đây là truy vấn để hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find () -
> dbkeyValueDemofind()pretty();
Đầu ra
{ "_id" : ObjectId("5cefcf36ef71edecf6a1f6bf"), "CustomerDetails" : [ { "Name" : "Chris", "Age" : 24 }, { "Name" : "Robert", "Age" : 29 }, { "Name" : "David", "Age" : 35 } ] }
Đây là truy vấn để cập nhật giá trị khóa trong đó khóa khác nhau bằng một số giá trị -
> dbkeyValueDemoupdate( {"CustomerDetails":{"$elemMatch":{"Name":"David"}}}, {"$set":{"CustomerDetails$Age":56}}); WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 } )
Hãy để chúng tôi kiểm tra tài liệu một lần nữa -
> dbkeyValueDemofind()pretty();
Đầu ra
{ "_id" : ObjectId("5cefcf36ef71edecf6a1f6bf"), "CustomerDetails" : [ { "Name" : "Chris", "Age" : 24 }, { "Name" : "Robert", "Age" : 29 }, { "Name" : "David", "Age" : 56 } ] }