Để tăng giá trị của trường trong đối tượng mảng, sử dụng toán tử $inc kết hợp positional operator $. Tạo collection:
> db.demo506.insertOne({"details":[{id:1,Quantity:4},{id:2,Quantity:3},{id:3,Quantity:2},{id:4,Quantity:7}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e882ed6987b6e0e9d18f576") }
Hiển thị dữ liệu:
> db.demo506.find().pretty();
Kết quả:
Tăng Quantity thêm 10 cho phần tử có id=2:
> db.demo506.update({"details.id":2},{$inc:{"details.$.Quantity":10}}); WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })Kiểm tra lại:
> db.demo506.find().pretty();Kết quả - Quantity của id=2 đã tăng từ 3 lên 13:
Giải thích:
{"details.id":2}tìm tài liệu chứa phần tử id=2 trong mảng details. Toán tử$tham chiếu đến phần tử khớp đầu tiên,$inctăng giá trị Quantity.