MongoDB Tài liệu Update() có ví dụ
\
⚡ Tóm tắt thông minh
MongoDB Thao tác Update() trên tài liệu sửa đổi các bản ghi hiện có trong một tập hợp. Phương thức update() nhận một điều kiện để chọn tài liệu và một bộ điều chỉnh như $set để thay đổi giá trị trường, và tùy chọn multi sẽ cập nhật nhiều tài liệu phù hợp cùng một lúc.
Cập nhật tài liệu cơ bản
MongoDB cung cấp lệnh update() để cập nhật tài liệu của bộ sưu tập. Để chỉ cập nhật những tài liệu bạn muốn cập nhật, bạn có thể thêm tiêu chí vào câu lệnh cập nhật để chỉ những tài liệu đã chọn mới được cập nhật.
Các tham số cơ bản trong lệnh là điều kiện mà tài liệu cần được cập nhật và tiếp theo là sửa đổi cần được thực hiện.
Ví dụ sau đây cho thấy cách thực hiện điều này.
Bước 1) Ra lệnh cập nhật
Bước 2) Chọn điều kiện bạn muốn sử dụng để quyết định tài liệu nào cần được cập nhật. Trong ví dụ của chúng tôi, chúng tôi muốn cập nhật tài liệu có id Nhân viên 22.
Bước 3) Sử dụng lệnh set để sửa đổi Tên trường
Bước 4) Chọn Tên trường bạn muốn sửa đổi và nhập giá trị mới cho phù hợp.
db.Employee.update( {"Employeeid" : 1}, {$set: { "EmployeeName" : "NewMartin"}});
Nếu lệnh được thực hiện thành công, Đầu ra sau sẽ được hiển thị
Đầu ra:
Kết quả đầu ra cho thấy rõ ràng rằng một bản ghi khớp với điều kiện và do đó giá trị trường liên quan đã được sửa đổi.
MongoDB Cập nhật Operaxoắn
Toán tử $set là cách phổ biến nhất để thay đổi một trường, nhưng MongoDB Cung cấp một số toán tử cập nhật cho các nhu cầu khác nhau. Bạn đặt chúng vào đối số thứ hai của hàm update() cùng với hoặc thay thế cho $set:
- bộ $: Thiết lập giá trị cho một trường, tạo trường đó nếu nó chưa tồn tại.
- $unset: Xóa hoàn toàn một trường khỏi tài liệu.
- $inc: Tăng hoặc giảm giá trị của một trường số theo một lượng nhất định.
- $mul: Nhân giá trị của một trường số.
- $rename: Đổi tên một trường thành tên mới.
- $đẩy: Thêm một giá trị vào trường mảng.
- $kéo: Loại bỏ các giá trị trùng khớp khỏi một trường mảng.
Mỗi toán tử chỉ nhắm mục tiêu vào các trường bạn chỉ định, giữ nguyên phần còn lại của tài liệu. Bạn có thể kết hợp nhiều toán tử trong một lệnh update() duy nhất để sửa đổi nhiều trường cùng một lúc, giúp các bản cập nhật chính xác và tránh ghi đè lên dữ liệu bạn muốn giữ lại.
Cập nhật nhiều giá trị
Để đảm bảo rằng nhiều tài liệu/hàng loạt được cập nhật cùng lúc trong MongoDB bạn cần sử dụng tùy chọn nhiều vì nếu không, theo mặc định chỉ có một tài liệu được sửa đổi tại một thời điểm.
Ví dụ sau đây cho thấy cách cập nhật nhiều tài liệu.
Trong ví dụ này, trước tiên chúng ta sẽ tìm tài liệu có id Nhân viên là “1” và thay đổi tên Nhân viên từ “Martin” thành “NewMartin”
Bước 1) Ra lệnh cập nhật
Bước 2) Chọn điều kiện bạn muốn sử dụng để quyết định tài liệu nào cần được cập nhật. Trong ví dụ của chúng tôi, chúng tôi muốn tài liệu có id Nhân viên là “1” được cập nhật.
Bước 3) Chọn Tên trường bạn muốn sửa đổi và nhập giá trị mới của chúng cho phù hợp.
db.Employee.update ( { Employeeid : 1 }, { $set : { "EmployeeName" : "NewMartin", "Employeeid" : 22 } } )
Nếu lệnh được thực thi thành công và nếu bạn chạy lệnh "tìm thấy" lệnh tìm kiếm tài liệu có ID nhân viên là 22 bạn sẽ thấy kết quả sau
Đầu ra:
Kết quả đầu ra cho thấy rõ ràng rằng một bản ghi khớp với điều kiện và do đó giá trị trường liên quan đã được sửa đổi.
Cách cập nhật/chèn thêm tài liệu trong MongoDB
Thao tác upsert là sự kết hợp giữa cập nhật và chèn. Khi bạn kích hoạt chức năng này, MongoDB Chức năng này cập nhật tài liệu phù hợp với điều kiện, hoặc chèn một tài liệu mới nếu không tìm thấy tài liệu phù hợp. Điều này hữu ích khi bạn không chắc chắn liệu bản ghi đã tồn tại hay chưa.
Để thực hiện thao tác upsert, hãy thêm tùy chọn upsert được đặt thành true làm đối số thứ ba của hàm update():
db.Employee.update( {Employeeid: 5}, {$set: {EmployeeName: "Sofia"}}, {upsert: true} )
Đây là những gì xảy ra:
- Nếu tồn tại một tài liệu có Employeeid 5, MongoDB cập nhật trường EmployeeName.
- Nếu không có tài liệu nào như vậy tồn tại, MongoDB Chèn một tài liệu mới với Employeeid 5 và EmployeeName “Sofiđến".
Chức năng Upsert rất tiện dụng cho bộ đếm, cài đặt và bất kỳ quy trình làm việc nào mà bạn muốn tạo bản ghi khi sử dụng lần đầu và cập nhật nó sau đó. Trong các hệ thống hiện đại MongoDBBạn cũng có thể thực hiện hành vi tương tự thông qua updateOne() và updateMany() bằng cách truyền tham số {upsert: true} vào tùy chọn. Hãy cẩn thận với điều kiện này, vì việc kết hợp bộ lọc rộng với thao tác cập nhật/thêm mới có thể tạo ra các tài liệu không mong muốn.
updateOne() so với updateMany() so với replaceOne()
Phương thức update() hiện là một lệnh cũ. (Phiên bản hiện đại) MongoDB Các tài xế chia hành vi của mình thành ba phương pháp rõ ràng hơn. Bảng dưới đây so sánh chúng:
| Phương pháp | Những gì nó | Các tài liệu bị ảnh hưởng |
|---|---|---|
| updateOne() | Áp dụng các toán tử cập nhật cho tài liệu khớp đầu tiên. | Một |
| cập nhậtMany() | Áp dụng các toán tử cập nhật cho mọi tài liệu phù hợp. | nhiều |
| thay thếOne() | Thay thế toàn bộ tài liệu khớp đầu tiên bằng một tài liệu mới. | Một |
Hãy sử dụng updateOne() để thực hiện thay đổi mục tiêu đơn lẻ, updateMany() thay cho tùy chọn multi cũ, và replaceOne() khi bạn muốn thay thế toàn bộ tài liệu thay vì chỉ chỉnh sửa các trường. Các phương thức này trả về kết quả rõ ràng cho thấy có bao nhiêu tài liệu khớp và bao nhiêu tài liệu đã được sửa đổi, điều này giúp chúng an toàn hơn và dễ gỡ lỗi hơn so với update().



