Node.js - MongoDB Tạo Collection
Xin chào các bạn đang học 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 Node.js và MongoDB. Là người giáo viên máy tính gần gũi của bạn, tôi ở đây để hướng dẫn bạn qua quy trình tạo các collection trong MongoDB sử dụng Node.js. Đừng lo lắng nếu bạn là người mới bắt đầu lập trình - chúng ta sẽ cùng nhau từng bước, và trước khi bạn nhận ra, bạn sẽ tạo collection như một chuyên gia!
MongoDB là gì?
Trước khi chúng ta đi vào chi tiết, hãy bắt đầu từ cơ bản. MongoDB là một cơ sở dữ liệu NoSQL phổ biến lưu trữ dữ liệu trong các tài liệu linh hoạt, tương tự JSON. Hãy tưởng tượng nó như một tủ đựng hồ sơ kỹ thuật số khổng lồ nơi bạn có thể lưu trữ mọi loại thông tin mà không cần quá lo lắng về cấu trúc.
Collection là gì?
Trong MongoDB, một collection giống như một thư mục trong tủ đựng hồ sơ. Nó là nơi chúng ta nhóm các tài liệu tương tự lại với nhau. Ví dụ, nếu bạn đang xây dựng một cơ sở dữ liệu thư viện, bạn có thể có một collection cho sách, một collection cho tác giả, và một collection cho người mượn.
Cài đặt Môi trường
Đầu tiên, chúng ta cần đảm bảo rằng đã cài đặt Node.js và MongoDB trên máy tính của mình. Nếu bạn chưa làm điều này, hãy nhanh chóng truy cập các trang web chính thức và làm theo hướng dẫn cài đặt của họ.
Sau khi cài đặt xong, hãy tạo một thư mục dự án mới và�始化 nó:
mkdir mongodb-collection-tutorial
cd mongodb-collection-tutorial
npm init -y
Bây giờ, hãy cài đặt trình điều khiển MongoDB cho Node.js:
npm install mongodb
Kết nối với MongoDB
Được rồi, bây giờ là phần thú vị! Hãy tạo một tệp mới có tên app.js
và bắt đầu bằng cách kết nối với cơ sở dữ liệu MongoDB của chúng ta:
const { MongoClient } = require('mongodb');
// Địa chỉ kết nối
const url = 'mongodb://localhost:27017';
// Tên cơ sở dữ liệu
const dbName = 'myLibrary';
// Tạo một MongoClient mới
const client = new MongoClient(url);
// Kết nối đến máy chủ
async function connect() {
try {
await client.connect();
console.log('Kết nối thành công đến cơ sở dữ liệu');
const db = client.db(dbName);
return db;
} catch (error) {
console.error('Lỗi kết nối đến cơ sở dữ liệu:', error);
}
}
Trong đoạn mã này, chúng ta đang thiết lập kết nối đến máy chủ MongoDB cục bộ. Chúng ta sử dụng localhost:27017
, đây là địa chỉ mặc định của MongoDB. Chúng ta cũng chỉ định tên cơ sở dữ liệu, myLibrary
. Đừng lo lắng nếu cơ sở dữ liệu này chưa tồn tại - MongoDB sẽ tạo nó cho chúng ta khi chúng ta lần đầu tiên sử dụng nó.
Tạo một Collection
Bây giờ chúng ta đã kết nối, hãy tạo collection đầu tiên! Chúng ta sẽ tạo một collection cho sách trong thư viện của mình:
async function createCollection() {
const db = await connect();
try {
const result = await db.createCollection('books');
console.log('Collection tạo thành công:', result.namespace);
} catch (error) {
if (error.code === 48) {
console.log('Collection đã tồn tại');
} else {
console.error('Lỗi tạo collection:', error);
}
} finally {
await client.close();
}
}
createCollection();
Để tóm tắt:
- Chúng ta sử dụng phương thức
createCollection
để tạo một collection mới có tên 'books'. - Nếu collection được tạo thành công, chúng ta ghi một tin nhắn thành công.
- Nếu có lỗi, chúng ta kiểm tra nếu lỗi là do collection đã tồn tại (mã lỗi 48). Nếu vậy, chúng ta ghi một tin nhắn rằng collection đã tồn tại. Đối với bất kỳ lỗi nào khác, chúng ta ghi chi tiết lỗi.
- Cuối cùng, chúng ta đóng kết nối cơ sở dữ liệu.
Thêm Tùy chọn cho Collection
MongoDB cho phép chúng ta chỉ định các tùy chọn khi tạo một collection. Hãy tạo một collection khác với một số tùy chọn:
async function createCollectionWithOptions() {
const db = await connect();
try {
const options = {
capped: true,
size: 1000000,
max: 5000
};
const result = await db.createCollection('logs', options);
console.log('Collection tạo thành công với tùy chọn:', result.namespace);
} catch (error) {
console.error('Lỗi tạo collection với tùy chọn:', error);
} finally {
await client.close();
}
}
createCollectionWithOptions();
Trong ví dụ này, chúng ta đang tạo một collection 'logs' với các tùy chọn sau:
-
capped: true
- Tạo một collection bị giới hạn kích thước. -
size: 1000000
- Đặt kích thước tối đa của collection là 1 triệu byte. -
max: 5000
- Đặt số lượng tài liệu tối đa mà collection có thể chứa là 5000.
Các tùy chọn này rất hữu ích cho các collection có tính chất "cuộn", như các tệp log, nơi bạn chỉ muốn giữ lại các mục mới nhất.
Kiểm tra xem Collection có Tồn Tại không
Đôi khi, bạn có thể muốn kiểm tra xem một collection đã tồn tại hay chưa trước khi thử tạo nó. Dưới đây là cách bạn có thể làm điều đó:
async function checkCollectionExists(collectionName) {
const db = await connect();
try {
const collections = await db.listCollections({name: collectionName}).toArray();
if (collections.length > 0) {
console.log(`Collection ${collectionName} tồn tại`);
} else {
console.log(`Collection ${collectionName} không tồn tại`);
}
} catch (error) {
console.error('Lỗi kiểm tra collection:', error);
} finally {
await client.close();
}
}
checkCollectionExists('books');
Hàm này sử dụng phương thức listCollections
để kiểm tra xem một collection với tên cho trước đã tồn tại hay chưa. Nếu mảng trả về có độ dài lớn hơn 0, điều đó có nghĩa là collection tồn tại.
Kết hợp Tất cả
Bây giờ chúng ta đã học về tạo collection, hãy kết hợp tất cả trong một script duy nhất:
const { MongoClient } = require('mongodb');
const url = 'mongodb://localhost:27017';
const dbName = 'myLibrary';
const client = new MongoClient(url);
async function connect() {
try {
await client.connect();
console.log('Kết nối thành công đến cơ sở dữ liệu');
return client.db(dbName);
} catch (error) {
console.error('Lỗi kết nối đến cơ sở dữ liệu:', error);
}
}
async function createCollections() {
const db = await connect();
try {
// Tạo collection 'books'
await db.createCollection('books');
console.log('Collection Books tạo thành công');
// Tạo collection 'logs' với tùy chọn
const logOptions = { capped: true, size: 1000000, max: 5000 };
await db.createCollection('logs', logOptions);
console.log('Collection Logs tạo thành công với tùy chọn');
// Kiểm tra xem collection 'authors' có tồn tại hay không
const collections = await db.listCollections({name: 'authors'}).toArray();
if (collections.length > 0) {
console.log('Collection Authors đã tồn tại');
} else {
await db.createCollection('authors');
console.log('Collection Authors tạo thành công');
}
} catch (error) {
console.error('Lỗi trong createCollections:', error);
} finally {
await client.close();
}
}
createCollections();
Đoạn mã này kết hợp tất cả các khái niệm mà chúng ta đã học:
- Kết nối đến cơ sở dữ liệu
- Tạo một collection đơn giản ('books')
- Tạo một collection với tùy chọn ('logs')
- Kiểm tra xem một collection có tồn tại hay không trước khi tạo ('authors')
Kết luận
Chúc mừng! Bạn đã chính thức bước những bước đầu tiên vào thế giới của MongoDB và Node.js. Chúng ta đã học cách kết nối đến cơ sở dữ liệu, tạo collection, thêm tùy chọn cho collection, và kiểm tra xem collection có tồn tại hay không. Đây là những kỹ năng cơ bản sẽ phục vụ bạn tốt khi bạn tiếp tục hành trình quản lý cơ sở dữ liệu với MongoDB.
Nhớ rằng, thực hành là cách tốt nhất để thành thạo. Hãy thử tạo các loại collection khác nhau, thử nghiệm với các tùy chọn khác nhau, và đừng sợ mắc lỗi - đó là cách chúng ta học hỏi!
Dưới đây là bảng tóm tắt các phương thức chính mà chúng ta đã sử dụng:
Phương thức | Mô tả |
---|---|
MongoClient.connect() |
Kết nối đến máy chủ MongoDB |
db.createCollection() |
Tạo một collection mới |
db.listCollections() |
Liệt kê các collection hiện có |
Tiếp tục lập mã, tiếp tục học hỏi, và quan trọng nhất, hãy vui vẻ! Hẹn gặp lại các bạn, chúc các bạn vui vẻ với cơ sở dữ liệu!
Credits: Image by storyset