Để cập nhật các đối tượng trong mảng của tài liệu, bạn cần sử dụng phương thức update (). Để hiểu phương thức update (), chúng ta hãy tạo một bộ sưu tập với tài liệu. Truy vấn để tạo một bộ sưu tập với tài liệu như sau:
> db.updateObjects.insertOne({"CustomerId":1,"CustomerName":"Larry","TotalItems":100, ... "ItemDetails":[ ... { ... "NameOfItem":"Item_1", ... "Amount":450 ... }, ... { ... "NameOfItem":"Item_2", ... "Amount":500 ... }, ... { ... "NameOfItem":"Item_3", ... "Amount":200 ... } ... ] ... } ... );
Sau đây là kết quả:
{ "acknowledged" : true, "insertedId" : ObjectId("5c6d688b0c3d5054b766a769") }
Bây giờ bạn có thể hiển thị 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 (). Truy vấn như sau:
> db.updateObjects.find().pretty();
Sau đây là kết quả hiển thị các tài liệu từ bộ sưu tập được tạo ở trên:
{ "_id" : ObjectId("5c6d688b0c3d5054b766a769"), "CustomerId" : 1, "CustomerName" : "Larry", "TotalItems" : 100, "ItemDetails" : [ { "NameOfItem" : "Item_1", "Amount" : 450 }, { "NameOfItem" : "Item_2", "Amount" : 500 }, { "NameOfItem" : "Item_3", "Amount" : 200 } ] }
Số gia tăng "Số tiền":200 với giá trị 130. Truy vấn như sau. Ở đây, chúng tôi đã sử dụng toán tử $ inc để tăng giá trị của một trường:
> db.updateObjects.update({"CustomerId":1,"ItemDetails.NameOfItem":"Item_3"}, {$inc:{"ItemDetails.$.Amount":130}}, ... false,true); WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Chúng tôi đã cập nhật thành công giá trị gia tăng. Hãy để chúng tôi hiển thị tài liệu từ bộ sưu tập. Truy vấn như sau:
> db.updateObjects.find().pretty();
Sau đây là kết quả:
{ "_id" : ObjectId("5c6d688b0c3d5054b766a769"), "CustomerId" : 1, "CustomerName" : "Larry", "TotalItems" : 100, "ItemDetails" : [ { "NameOfItem" : "Item_1", "Amount" : 450 }, { "NameOfItem" : "Item_2", "Amount" : 500 }, { "NameOfItem" : "Item_3", "Amount" : 330 } ] }
Nhìn vào kết quả đầu ra của mẫu, Số tiền 200 được tăng lên với 130, bây giờ là 330.