Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Tăng giá trị thuộc tính phần tử mảng object trong MongoDB

Để tăng giá trị của một trường trong phần tử mảng object, dùng update() với toán tử $inc và positional operator $.

Dữ liệu mẫu

> db.demo97.insertOne({
...     "Details": [
...         { "Name": "Chris", "Marks": 45 },
...         { "Name": "Bob", "Marks": 88 }
...     ]
... });
{ "acknowledged" : true, "insertedId" : ObjectId("5e2d6d24b8903cdd865577af") }

Truy vấn tăng Marks 10 cho Bob

> db.demo97.update(
...     { "Details.Name": "Bob" },
...     { $inc: { "Details.$.Marks" : 10 } }
... );
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Kết quả

{ "_id" : ObjectId("5e2d6d24b8903cdd865577af"), "Details" : [ { "Name" : "Chris", "Marks" : 45 }, { "Name" : "Bob", "Marks" : 98 } ] }

Giải thích:

  • { "Details.Name": "Bob" }: Tìm document có phần tử Name="Bob" trong mảng Details
  • Details.$.Marks: Toán tử $ trỏ đến phần tử đầu tiên khớp trong mảng
  • $inc: Tăng giá trị số (cũng dùng cho giảm với số âm)

Lưu ý: Chỉ cập nhật phần tử đầu tiên khớp. Nếu cần cập nhật nhiều phần tử khớp, dùng arrayFilters (MongoDB 3.6+) hoặc $[] filtered positional operator.