MongoDB - chuỗi tăng tự động: Hướng dẫn cho người mới bắt đầu
Xin chào bạn, tương lai của ngôi sao lập trình! ? 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 MongoDB và học về Chuỗi Tăng Tự Động. Đừng lo lắng nếu bạn chưa bao giờ viết một dòng mã trước đây - tôi sẽ là hướng dẫn viên thân thiện của bạn, và chúng ta sẽ cùng nhau từng bước. Cuối cùng của bài hướng dẫn này, bạn sẽ ngạc nhiên về những gì bạn có thể làm!
Chuỗi tăng tự động là gì?
Trước khi chúng ta bắt đầu, hãy hiểu Chuỗi Tăng Tự Động là gì. Hãy tưởng tượng bạn đang tổ chức một bữa tiệc lớn, và bạn muốn mỗi khách đến nhận một số duy nhất. Bạn bắt đầu từ 1, rồi 2, 3, và cứ thế. Đó chính là điều mà Chuỗi Tăng Tự Động làm trong cơ sở dữ liệu - nó tự động gán một số duy nhất, tăng dần cho mỗi bản ghi mới.
MongoDB không có tính năng tăng tự động nội tại như một số cơ sở dữ liệu khác. Nhưng đừng lo lắng! Chúng ta sẽ học cách tạo riêng của mình. Đó như thể bạn là một phù thủy và tạo ra của mình một lời nguyền. Đúng là cool phải không?
Sử dụng Bộ Đếm
Cách đầu tiên để tạo Chuỗi Tăng Tự Động là sử dụng một thứ gọi là Bộ Đếm. Hãy tưởng tượng này như một cuốn sổ tay đặc biệt nơi chúng ta theo dõi số của mình.
Bước 1: Tạo Bộ Đếm
Trước tiên, chúng ta cần tạo cuốn sổ tay đặc biệt của mình. Trong thuật ngữ MongoDB, chúng ta sẽ tạo một bộ sưu tập mới gọi là "counters".
db.createCollection("counters")
Bước 2: Chèn một tài liệu đếm
Bây giờ, hãy thêm một trang vào sổ tay của chúng ta cho một chuỗi cụ thể. Chúng ta sẽ gọi nó là "userId".
db.counters.insert(
{
_id: "userId",
seq: 0
}
)
Điều này tạo một tài liệu trong bộ sưu tập counters. Trường _id
là "userId" (tên chuỗi của chúng ta), và seq
là 0 (số bắt đầu).
Bước 3: Sử dụng findAndModify để lấy chuỗi tiếp theo
Đây là phần kỳ diệu! Chúng ta sẽ sử dụng một thao tác đặc biệt của MongoDB gọi là findAndModify
để lấy số tiếp theo trong chuỗi của mình.
function getNextSequence(name) {
var ret = db.counters.findAndModify(
{
query: { _id: name },
update: { $inc: { seq: 1 } },
new: true
}
);
return ret.seq;
}
Hãy phân tích này:
-
query: { _id: name }
tìm tài liệu "userId". -
update: { $inc: { seq: 1 } }
tăng giá trịseq
lên 1. -
new: true
yêu cầu MongoDB trả về tài liệu đã được cập nhật.
Bước 4: Sử dụng chuỗi trong bộ sưu tập của bạn
Bây giờ, khi bạn muốn chèn một người dùng mới với ID tăng tự động, bạn có thể làm như sau:
db.users.insert(
{
_id: getNextSequence("userId"),
name: "Sarah Connor",
age: 29
}
)
Mỗi lần bạn chạy điều này, nó sẽ sử dụng một ID mới, tăng dần. Đúng là kỳ diệu phải không?
Tạo hàm JavaScript
Bây giờ chúng ta đã hiểu các nguyên tắc cơ bản, hãy tạo một hàm JavaScript mạnh mẽ hơn để xử lý nhu cầu tăng tự động của mình.
function getNextSequence(db, sequenceName) {
const sequenceDocument = db.collection("counters").findOneAndUpdate(
{ _id: sequenceName },
{ $inc: { sequence_value: 1 } },
{ returnDocument: "after", upsert: true }
);
return sequenceDocument.sequence_value;
}
Hàm này làm một số điều thú vị:
- Nó sử dụng
findOneAndUpdate
, đây là phiên bản hiện đại hơn củafindAndModify
. - Tùy chọn
upsert: true
có nghĩa là nó sẽ tạo chuỗi nếu nó không tồn tại. -
returnDocument: "after"
đảm bảo rằng chúng ta nhận được giá trị đã được cập nhật.
Sử dụng hàm JavaScript
Bây giờ, hãy sử dụng hàm mới của chúng ta!
Ví dụ 1: Tạo người dùng mới
const db = client.db("myDatabase");
const userId = await getNextSequence(db, "userId");
const result = await db.collection("users").insertOne({
_id: userId,
name: "John Doe",
email: "[email protected]"
});
console.log(`Người dùng mới được tạo với id: ${userId}`);
Trong ví dụ này, chúng ta đang tạo một người dùng mới với ID tăng tự động. Đó như thể mỗi người dùng mới nhận một số VIP tại bữa tiệc của chúng ta!
Ví dụ 2: Tạo sản phẩm mới
const productId = await getNextSequence(db, "productId");
const result = await db.collection("products").insertOne({
_id: productId,
name: "Phụ kiện Awsome",
price: 99.99
});
console.log(`Sản phẩm mới được thêm với id: ${productId}`);
Thấy sao chúng ta sử dụng cùng một hàm nhưng với tên chuỗi khác? Đó như thể chúng ta có nhiều线路, mỗi线路 có hệ thống số của riêng nó!
Bảng phương thức nhanh
Dưới đây là bảng tham khảo nhanh các phương thức chúng ta đã sử dụng:
Phương thức | Mô tả |
---|---|
createCollection |
Tạo một bộ sưu tập mới |
insert |
Chèn một tài liệu mới vào bộ sưu tập |
findAndModify |
Tìm và sửa đổi một tài liệu |
findOneAndUpdate |
Phiên bản hiện đại của findAndModify |
insertOne |
Chèn một tài liệu duy nhất vào bộ sưu tập |
Kết luận
Chúc mừng! Bạn vừa học cách tạo và sử dụng Chuỗi Tăng Tự Động trong MongoDB. Nhớ rằng, nó như thể bạn là người tổ chức bữa tiệc, đảm bảo mỗi người nhận một số duy nhất. Kỹ năng này sẽ rất hữu ích khi bạn xây dựng các ứng dụng cần ID duy nhất, tăng dần.
Thực hành làm cho hoàn hảo, vì vậy đừng ngần ngại thử nghiệm với các khái niệm này. Trước khi bạn biết, bạn sẽ tạo ra các thao tác cơ sở dữ liệu phức tạp như một chuyên gia! Hãy tiếp tục lập trình, tiếp tục học hỏi, và quan trọng nhất, hãy vui vẻ! ?????
Credits: Image by storyset