Để cập nhật nhiều phần tử, hãy sử dụng $[]. $[] là toán tử tất cả vị trí chỉ ra rằng toán tử cập nhật sẽ sửa đổi tất cả các phần tử trong trường mảng đã chỉ định
Trước tiên chúng ta hãy tạo một bộ sưu tập với các tài liệu -
> db.demo385.insertOne[{"ServerLogs": [ .. { .. "status":"InActive" .. }, .. { .. "status":"InActive" .. }, .. { .. "status":"InActive" .. } .. ] .. } .. ]; { "acknowledged" : true, "insertedId" : ObjectId["5e5b6a7522064be7ab44e7f5"] }
Hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find[] -
> db.demo385.find[].pretty[];
Điều này sẽ tạo ra đầu ra sau -
{ "_id" : ObjectId["5e5b6a7522064be7ab44e7f5"], "ServerLogs" : [ { "status" : "InActive" }, { "status" : "InActive" }, { "status" : "InActive" } ] }
Sau đây là truy vấn để cập nhật nhiều phần tử trong một mảng trong MongoDB -
> db.demo385.update[ .. { "_id" : ObjectId["5e5b6a7522064be7ab44e7f5"] }, .. { "$set": { "ServerLogs.$[].status": "Active" }} .. ] WriteResult[{ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }]
Hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find[] -
> db.demo385.find[].pretty[];
Điều này sẽ tạo ra đầu ra sau -
{ "_id" : ObjectId["5e5b6a7522064be7ab44e7f5"], "ServerLogs" : [ { "status" : "Active" }, { "status" : "Active" }, { "status" : "Active" } ] }
Bắt đầu từ MongoDB 5. 0, toán tử cập nhật xử lý các trường tài liệu có tên dựa trên chuỗi theo thứ tự từ điển. Các trường có tên số được xử lý theo thứ tự số. Xem để biết chi tiết
Nếu trường không tồn tại, sẽ thêm trường mới với giá trị đã chỉ định, miễn là trường mới không vi phạm ràng buộc loại. Nếu bạn chỉ định một đường chấm chấm cho một trường không tồn tại, thì sẽ tạo các tài liệu được nhúng khi cần để thực hiện đường chấm chấm tới trường
Nếu bạn chỉ định nhiều cặp trường-giá trị, sẽ cập nhật hoặc tạo từng trường
Bắt đầu từ MongoDB 5. 0, không còn phát sinh lỗi khi bạn sử dụng toán tử cập nhật như với biểu thức toán hạng trống [
db.products.updateOne[ { _id: 100 }, { $set: { quantity: 500, details: { model: "2600", make: "Fashionaires" }, tags: [ "coats", "outerwear", "clothing" ] } }]
0 ]. Bản cập nhật trống dẫn đến không có thay đổi nào và không có mục nào được tạo [có nghĩa là thao tác này không hoạt động]ví dụ
Tạo bộ sưu tập
db.products.updateOne[ { _id: 100 }, { $set: { quantity: 500, details: { model: "2600", make: "Fashionaires" }, tags: [ "coats", "outerwear", "clothing" ] } }]
1________số 8
Đặt trường cấp cao nhất
Đối với tài liệu phù hợp với tiêu chí
db.products.updateOne[ { _id: 100 }, { $set: { quantity: 500, details: { model: "2600", make: "Fashionaires" }, tags: [ "coats", "outerwear", "clothing" ] } }]
2 bằng với db.products.updateOne[ { _id: 100 }, { $set: { quantity: 500, details: { model: "2600", make: "Fashionaires" }, tags: [ "coats", "outerwear", "clothing" ] } }]
3, thao tác sau đây cập nhật giá trị phần tử thứ hai [chỉ mục mảng của > db.demo385.find[].pretty[];10] trong trường
db.products.updateOne[ { _id: 100 }, { $set: { quantity: 500, details: { model: "2600", make: "Fashionaires" }, tags: [ "coats", "outerwear", "clothing" ] } }]
7 và trường > db.demo385.find[].pretty[];12 trong phần tử đầu tiên [chỉ mục mảng của
> db.demo385.find[].pretty[];13] của mảng
> db.demo385.find[].pretty[];14