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

Cập nhật document lồng nhau trong MongoDB

Dùng $set với dot notation để cập nhật sâu

MongoDB cho phép cập nhật trường lồng sâu bằng cách chỉ định đường dẫn qua dấu chấm.

Dữ liệu ban đầu

> db.demo315.insertOne({
    _id: 101,
    details: [{
        Name: 'Chris',
        subjects: [{id: 1001, SubjectName: "MySQL"}]
    }]
});

Cập nhật: Thêm subject thứ 2 với id=1004

> db.demo315.update(
    { _id: 101 },
    { $set: { "details.0.subjects.1.id": 1004 } }
);

Kết quả

{
    "_id": 101,
    "details": [{
        "Name": "Chris",
        "subjects": [
            { "id": 1001, "SubjectName": "MySQL" },
            { "id": 1004 }  // SubjectName chưa có, sẽ được thêm khi set
        ]
    }]
}

Cú pháp đường dẫn: details.0.subjects.1.id nghĩa là:

  • details - mảng
  • 0 - phần tử đầu tiên
  • subjects - mảng con
  • 1 - phần tử thứ 2 (index 1)
  • id - trường cần set

Lưu ý: Nếu index vượt quá độ dài mảng, MongoDB sẽ tự động mở rộng mảng với các phần tử null.