MongoDB - Cập Nhật Tài Liệu
Xin chào các nhà法师 数据库 tương lai! Hôm nay, chúng ta sẽ cùng lặn sâu vào thế giới thú vị của việc cập nhật tài liệu trong MongoDB. Là người thầy máy tính gần gũi của bạn, tôi ở đây để hướng dẫn bạn qua hành trình này với rất nhiều ví dụ và giải thích. Vậy, hãy lấy饮料 yêu thích của bạn, ngồi thoải mái, và cùng nhau bắt đầu cuộc phiêu lưu MongoDB này nhé!
Phương thức MongoDB update()
Hãy bắt đầu với phương thức update() kinh điển. Hãy tưởng tượng bạn có một bộ sưu tập sách trong cơ sở dữ liệu MongoDB của bạn, và bạn muốn cập nhật giá của một cuốn sách cụ thể. Dưới đây là cách bạn có thể làm điều đó:
db.books.update(
{ title: "The Great Gatsby" },
{ $set: { price: 12.99 } }
)
Trong ví dụ này, chúng ta đang yêu cầu MongoDB tìm một cuốn sách có tựa đề "The Great Gatsby" và đặt giá của nó thành 12.99. Điều này giống như đi đến một hiệu sách và dán một tem giá mới lên một cuốn sách cụ thể.
Nhưng đợi đã, còn nhiều điều hơn nữa! Phương thức update() có một số mẹo nhỏ. Hãy xem một ví dụ phức tạp hơn:
db.books.update(
{ author: "F. Scott Fitzgerald" },
{ $inc: { copiesSold: 100 }, $set: { bestseller: true } },
{ multi: true }
)
Ở đây, chúng ta đang tăng giá trị trường 'copiesSold' lên 100 và đặt 'bestseller' thành true cho tất cả các cuốn sách của F. Scott Fitzgerald. Tùy chọn 'multi: true' đảm bảo rằng chúng ta cập nhật tất cả các tài liệu khớp, không chỉ tài liệu đầu tiên.
Phương thức MongoDB save()
Bây giờ, hãy nói về phương thức save(). Phương thức này giống như một cây kéo đa năng - nó có thể cả chèn một tài liệu mới hoặc cập nhật một tài liệu hiện có. Dưới đây là một ví dụ:
db.books.save(
{
_id: ObjectId("507f1f77bcf86cd799439011"),
title: "To Kill a Mockingbird",
author: "Harper Lee",
year: 1960,
price: 10.99
}
)
Nếu một tài liệu với _id này đã tồn tại, nó sẽ được cập nhật. Nếu không, một tài liệu mới sẽ được chèn vào. Điều này giống như có một bút ma thuật có thể viết một mục mới trong danh mục thư viện của bạn hoặc cập nhật một mục hiện có!
Phương thức MongoDB findOneAndUpdate()
Phương thức findOneAndUpdate() giống như một thám tử tìm một tài liệu, cập nhật nó, và sau đó báo cáo lại với tài liệu gốc hoặc tài liệu đã được cập nhật. Hãy xem nó trong hành động:
db.books.findOneAndUpdate(
{ title: "1984" },
{ $set: { genre: "Dystopian Fiction" } },
{ new: true }
)
Phương thức này tìm cuốn sách "1984", thêm một thể loại, và trả về tài liệu đã được cập nhật (vì 'new: true'). Điều này giống như yêu cầu thư viện của bạn tìm một cuốn sách, thêm một tem thể loại, và cho bạn xem cuốn sách đã được cập nhật.
Phương thức MongoDB updateOne()
Phương thức updateOne() hoàn hảo khi bạn chắc chắn rằng bạn muốn cập nhật chỉ một tài liệu. Dưới đây là cách bạn có thể sử dụng nó:
db.books.updateOne(
{ title: "The Catcher in the Rye" },
{ $set: { status: "Checked Out" }, $inc: { timesCheckedOut: 1 } }
)
Điều này cập nhật trạng thái của "The Catcher in the Rye" thành "Checked Out" và tăng bộ đếm 'timesCheckedOut' lên 1. Điều này giống như cập nhật trạng thái của một cuốn sách trong hệ thống thư viện của bạn.
Phương thức MongoDB updateMany()
Cuối cùng, chúng ta có updateMany(). Phương thức này rất hữu ích khi bạn cần thực hiện thay đổi đối với nhiều tài liệu cùng một lúc. Hãy xem một ví dụ:
db.books.updateMany(
{ year: { $lt: 1900 } },
{ $set: { category: "Classic" }, $inc: { specialEditionPrice: 5 } }
)
Thao tác này tìm tất cả các cuốn sách được xuất bản trước năm 1900, phân loại chúng là "Classic", và tăng giá bản đặc biệt lên 5. Điều này giống như đi qua toàn bộ thư viện của bạn và cập nhật tất cả các cuốn sách cũ cùng một lúc!
Bây giờ, hãy tóm tắt tất cả các phương thức này trong một bảng tiện lợi:
Phương thức | Mô tả | Trường hợp sử dụng |
---|---|---|
update() | Cập nhật một tài liệu hoặc nhiều tài liệu | Cập nhật tổng quát |
save() | Chèn một tài liệu mới hoặc cập nhật một tài liệu hiện có | Khi bạn không chắc tài liệu có tồn tại hay không |
findOneAndUpdate() | Tìm một tài liệu, cập nhật nó, và trả về hoặc tài liệu gốc hoặc tài liệu đã được cập nhật | Khi bạn cần biết trạng thái của tài liệu trước hoặc sau khi cập nhật |
updateOne() | Cập nhật một tài liệu | Khi bạn chắc chắn rằng bạn muốn cập nhật chỉ một tài liệu |
updateMany() | Cập nhật nhiều tài liệu | Khi bạn cần thực hiện thay đổi đối với nhiều tài liệu cùng một lúc |
Nhớ nhé, cácpadawan trẻ, việc cập nhật tài liệu trong MongoDB giống như chăm sóc một vườn cây. Bạn cần phải cẩn thận và chính xác, nhưng với những công cụ này trong tay, bạn có thể塑形 dữ liệu của mình một cách đẹp mắt.
Khi chúng ta kết thúc bài học này, tôi nhớ lại một lần tôi vô tình cập nhật tất cả các cuốn sách trong cơ sở dữ liệu của mình để được viết bởi "Anonymous". Điều đó đã mất hàng giờ để sửa, nhưng nó đã dạy tôi tầm quan trọng của việc cụ thể trong các truy vấn của mình. Luôn kiểm tra lại các điều kiện trước khi nhấn nút cập nhật!
Bây giờ, hãy tiến lên và cập nhật tài liệu của bạn với lòng tự tin. Hy vọng rằng các truy vấn của bạn sẽ chính xác và các bản cập nhật của bạn sẽ nhanh chóng!
Credits: Image by storyset