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.

  • ✏️ Phương thức update(): Lệnh update() thay đổi các trường trong tài liệu khi chúng khớp với một điều kiện nhất định.
  • 🎯 Điều kiện trận đấu: Tham số đầu tiên chọn các tài liệu cần cập nhật, ví dụ như {Employeeid:1}.
  • 🔧 $ set Operator: Toán tử `$set` gán một giá trị mới cho một trường mà không thay thế toàn bộ tài liệu.
  • 📚 Cập nhật nhiều thông tin: Tùy chọn đa, hay updateMany(), sẽ sửa đổi mọi tài liệu khớp thay vì chỉ một tài liệu.
  • Upsert: Tùy chọn upsert chèn một tài liệu mới khi không có tài liệu hiện có nào đáp ứng điều kiện.
  • 🔄 Phương pháp hiện đại: updateOne(), updateMany() và replaceOne() hiện là các phương thức thay thế cho phương thức update() đã bị loại bỏ.

MongoDB Tài liệu cập nhật()

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:

Cập nhật tài liệu cơ bản

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:

Cập nhật nhiều giá trị

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().

Câu Hỏi Thường Gặp

Nếu không có toán tử cập nhật như $set, MongoDB Thay thế toàn bộ tài liệu đã khớp bằng đối tượng bạn cung cấp, xóa bất kỳ trường nào không được bao gồm. Luôn sử dụng `$set` để thay đổi các trường cụ thể trong khi vẫn giữ nguyên.ping Phần còn lại vẫn nguyên vẹn.

Đúng vậy. Nếu trường có tên trong biến $set bị thiếu trong tài liệu được khớp, MongoDB Thêm giá trị đã cho vào. Điều này làm cho `$set` hữu ích cho cả việc cập nhật các trường hiện có và thêm các trường mới.

Sử dụng hàm findOneAndUpdate() với tùy chọn returnDocument được đặt thành 'after'. Thao tác này sẽ áp dụng thay đổi và trả về tài liệu đã được sửa đổi trong một thao tác nguyên tử duy nhất, rất hữu ích khi bạn cần các giá trị mới ngay lập tức.

Trí tuệ nhân tạo (AI) có thể biến một yêu cầu đơn giản thành lệnh cập nhật hoặc cập nhật nhiều lệnh với điều kiện và toán tử phù hợp, chẳng hạn như `$set` hoặc `$inc`, và giải thích từng phần để người mới bắt đầu tránh mắc lỗi.

Đúng vậy. AI có thể gắn cờ bản cập nhật bỏ sót biến $set và sẽ thay thế toàn bộ tài liệu, cảnh báo khi bộ lọc khớp với mọi thứ, và đề xuất thử nghiệm trên bản sao trước khi chạy trong môi trường sản xuất.

Tóm tắt bài viết này với: