Sử dụng update() kết hợp $addToSet để thêm giá trị vào mảng lồng nhau. Toán tử $addToSet chỉ thêm giá trị nếu chưa tồn tại trong mảng. Tạo collection:
> db.demo509.insertOne({
"value1": [
{ "value2": [ 76, 14, 56 ] },
{ "value2": [ 12, 19, 91 ] },
{ "value2": [ 87 ] }
]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e88421d987b6e0e9d18f57d") }
Hiển thị tài liệu:
> db.demo509.find();
Kết quả:
Thêm giá trị 1000 vào mảng
value2của phần tử thứ 3 (index 2) trong mảngvalue1:> db.demo509.update({},{$addToSet:{"value1.2.value2":1000}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })Kiểm tra lại:
> db.demo509.find();Kết quả - giá trị 1000 đã được thêm vào mảng value2 của phần tử index 2:
Lưu ý: Cú pháp
value1.2.value2truy cập đến mảngvalue2của phần tử tại index 2 trong mảngvalue1. Nếu chạy lại lệnh, giá trị 1000 sẽ không bị trùng lặp nhờ$addToSet.