Node.js - MongoDB Cập nhật: Hướng dẫn chi tiết cho người mới bắt đầu

Xin chào các bạnfuture programmers! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới của các bản cập nhật MongoDB bằng Node.js. Tôi nhớ lại khi tôi bắt đầu dạy chủ đề này, tôi thường thấy sự pha trộn của niềm vui và sự困惑 trên khuôn mặt của học sinh. Nhưng đừng lo lắng, đến cuối bài hướng dẫn này, bạn sẽ cập nhật tài liệu MongoDB như một chuyên gia!

Node.js - MongoDB Update

Hiểu về các bản cập nhật MongoDB

Trước khi chúng ta nhảy vào các phương thức cụ thể, hãy dành một chút thời gian để hiểu cập nhật trong MongoDB là gì. Hãy tưởng tượng bạn có một cuốn sổ tay kỹ thuật số (đó là cơ sở dữ liệu của chúng ta) đầy thông tin (các tài liệu của chúng ta). Đôi khi, bạn cần thay đổi những gì đã viết trên những trang này. Đó chính xác là điều cập nhật trong MongoDB làm - nó cho phép chúng ta sửa đổi các tài liệu hiện có trong các bộ sưu tập của mình.

Các phương thức cập nhật

MongoDB cung cấp cho chúng ta hai phương thức chính để cập nhật tài liệu:

Phương thức Mô tả
updateOne() Cập nhật một tài liệu duy nhất khớp với bộ lọc
updateMany() Cập nhật nhiều tài liệu khớp với bộ lọc

Bây giờ, hãy cùng khám phá từng phương thức này chi tiết.

updateOne(): Cập nhật chính xác

Phương thức updateOne() giống như một bác sĩ phẫu thuật chính xác, chỉ sửa đổi một tài liệu tại một thời điểm. Nó hoàn hảo khi bạn biết chính xác tài liệu nào bạn muốn thay đổi.

Cú pháp

db.collection.updateOne(filter, update, options)

Hãy phân tích này:

  • filter: Xác định tài liệu nào cần cập nhật
  • update: Định nghĩa các修改 để áp dụng
  • options: Các tham số tùy chọn để kiểm soát hoạt động cập nhật

Ví dụ 1: Cập nhật một trường duy nhất

Hãy tưởng tượng chúng ta có một bộ sưu tập sách, và chúng ta muốn cập nhật giá của "The Great Gatsby". Đây là cách chúng ta làm:

const { MongoClient } = require('mongodb');

async function updateBookPrice() {
const uri = "mongodb://localhost:27017";
const client = new MongoClient(uri);

try {
await client.connect();
const database = client.db("bookstore");
const books = database.collection("books");

const filter = { title: "The Great Gatsby" };
const updateDoc = {
$set: {
price: 15.99
},
};

const result = await books.updateOne(filter, updateDoc);
console.log(`Cập nhật ${result.modifiedCount} tài liệu`);
} finally {
await client.close();
}
}

updateBookPrice();

Trong ví dụ này, chúng ta sử dụng toán tử $set để cập nhật giá. Toán tử $set thay thế giá trị của một trường bằng giá trị chỉ định.

Ví dụ 2: Thêm một trường mới

Bây giờ, hãy tưởng tượng chúng ta muốn thêm trường "lastUpdated" vào tài liệu sách của chúng ta:

const filter = { title: "The Great Gatsby" };
const updateDoc = {
$set: {
lastUpdated: new Date()
},
};

const result = await books.updateOne(filter, updateDoc);

Điều này sẽ thêm một trường mới "lastUpdated" với ngày và giờ hiện tại vào tài liệu của chúng ta.

updateMany(): Cập nhật hàng loạt

Đôi khi, bạn cần cập nhật nhiều tài liệu cùng một lúc. Đó là khi updateMany() trở nên hữu ích. Nó giống như một giáo viên chấm tất cả các bài kiểm tra cùng một lúc, thay vì từng bài một.

Cú pháp

db.collection.updateMany(filter, update, options)

Các tham số giống như updateOne(), nhưng phương thức này sẽ cập nhật tất cả các tài liệu khớp với bộ lọc.

Ví dụ 3: Cập nhật nhiều tài liệu

Hãy tưởng tượng chúng ta muốn áp dụng giảm giá 10% cho tất cả các sách có giá trên $20:

async function applyDiscount() {
const uri = "mongodb://localhost:27017";
const client = new MongoClient(uri);

try {
await client.connect();
const database = client.db("bookstore");
const books = database.collection("books");

const filter = { price: { $gt: 20 } };
const updateDoc = {
$mul: {
price: 0.9
},
};

const result = await books.updateMany(filter, updateDoc);
console.log(`Cập nhật ${result.modifiedCount} tài liệu`);
} finally {
await client.close();
}
}

applyDiscount();

Trong ví dụ này, chúng ta sử dụng toán tử $mul để nhân giá bằng 0.9 (áp dụng giảm giá 10%). Toán tử $gt trong bộ lọc chọn tất cả các tài liệu có giá lớn hơn 20.

Toán tử cập nhật

MongoDB cung cấp nhiều toán tử cập nhật cho phép chúng ta thực hiện các cập nhật phức tạp. Dưới đây là một số toán tử thường được sử dụng:

Toán tử Mô tả
$set Đặt giá trị của một trường
$inc Tăng giá trị của một trường lên một số lượng chỉ định
$mul Nhân giá trị của một trường với một số lượng chỉ định
$rename Đổi tên một trường
$unset Loại bỏ một trường khỏi tài liệu
$min Cập nhật trường nếu giá trị chỉ định nhỏ hơn giá trị hiện tại của trường
$max Cập nhật trường nếu giá trị chỉ định lớn hơn giá trị hiện tại của trường

Ví dụ 4: Sử dụng nhiều toán tử trong một hoạt động cập nhật

Hãy sử dụng nhiều toán tử trong một hoạt động cập nhật:

const filter = { title: "The Great Gatsby" };
const updateDoc = {
$set: { author: "F. Scott Fitzgerald" },
$inc: { copiesSold: 1000 },
$rename: { "publishYear": "yearPublished" }
};

const result = await books.updateOne(filter, updateDoc);

Hoạt động cập nhật này đặt tác giả, tăng số lượng bán ra lên 1000, và đổi tên trường "publishYear" thành "yearPublished".

Kết luận

Và thế là bạn đã có nó, các bạn! Chúng ta đã cùng nhau hành trình qua vùng đất của các bản cập nhật MongoDB, khám phá các phương thức updateOne()updateMany(), và thậm chí còn thử nghiệm với các toán tử cập nhật khác nhau. Nhớ rằng, thực hành là cách tốt nhất để trở nên hoàn hảo, vì vậy đừng ngần ngại thử nghiệm các phương thức này trong các dự án của riêng bạn.

Tôi luôn告诉 học sinh của mình rằng học các hoạt động cơ sở dữ liệu giống như học nấu ăn - ban đầu, nó có thể看起来 phức tạp, nhưng một khi bạn đã làm quen, bạn sẽ tạo ra các truy vấn phức tạp như một đầu bếp master chuẩn bị một bữa ăn gourmet!

Tiếp tục mã hóa, tiếp tục học hỏi, và quan trọng nhất, hãy vui vẻ với nó! Đến gặp lại các bạn lần sau, chúc các bạn cập nhật vui vẻ!

Credits: Image by storyset