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

Tăng giá trị trong mảng lồng nhau MongoDB

Sử dụng positional operator $ để cập nhật phần tử cụ thể trong mảng lồng nhau.

Ví dụ minh họa

Tạo collection incrementValueInNestedArrayDemo với mảng ChiTietSinhVien lồng nhau:

> db.incrementValueInNestedArrayDemo.insertOne({
  "MaDinhDanh": 1,
  "ChiTietSinhVien": [
    {"MaSinhVien": 101, "DiemSo": 97},
    {"MaSinhVien": 103, "DiemSo": 99},
    {"MaSinhVien": 105, "DiemSo": 92},
    {"MaSinhVien": 107, "DiemSo": 59}
  ]
});

Truy vấn tăng điểm cho sinh viên MaSinhVien=107

> db.incrementValueInNestedArrayDemo.update(
  {MaDinhDanh: 1, "ChiTietSinhVien.MaSinhVien": 107},
  {$inc: {"ChiTietSinhVien.$.DiemSo": 1}}
);
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })

Kết quả: DiemSo của sinh viên 107 tăng từ 59 lên 60.

Giải thích: Toán tử $ tham chiếu đến phần tử đầu tiên khớp với điều kiện trong mảng (ChiTietSinhVien.MaSinhVien: 107). Chỉ cập nhật phần tử đó, không ảnh hưởng phần tử khác.