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

Cập nhật đối tượng con (sub-object) trong MongoDB

Sử dụng $set với dot notation. Tạo collection:

> db.updateSubObjectDemo.insertOne({
    "ClientId": 100,
    "ClientDetails": { "ClientFirstName": "Adam" }
});
{ "acknowledged": true, "insertedId": ObjectId("5cd31434b64f4b851c3a13e9") }

Hiển thị tài liệu

> db.updateSubObjectDemo.find().pretty();

Kết quả:

{
    "_id": ObjectId("5cd31434b64f4b851c3a13e9"),
    "ClientId": 100,
    "ClientDetails": { "ClientFirstName": "Adam" }
}

Cập nhật thêm ClientLastName vào sub-object

> db.updateSubObjectDemo.update(
    { ClientId: 100 },
    { $set: { "ClientDetails.ClientLastName": "Smith" } }
);
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })

Kết quả

> db.updateSubObjectDemo.find().pretty();

Kết quả (ClientDetails giờ có cả FirstName và LastName):

{
    "_id": ObjectId("5cd31434b64f4b851c3a13e9"),
    "ClientId": 100,
    "ClientDetails": {
        "ClientFirstName": "Adam",
        "ClientLastName": "Smith"
    }
}

Mẹo: Dùng $set với dot notation để thêm/cập nhật trường sâu mà không ghi đè toàn bộ đối tượng cha.