MongoDB - Tạo Collection: Hướng dẫn cho người mới bắt đầu

Xin chào các bạn tương lai của các nhà phù thủy cơ sở dữ liệu! 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 cách tạo các collection. Đừng lo lắng nếu bạn mới bắt đầu học lập trình - tôi sẽ là người hướng dẫn thân thiện của bạn, giải thích mọi thứ từng bước. Vậy, hãy lấy một tách cà phê (hoặc trà, nếu đó là sở thích của bạn), và chúng ta cùng nhảy vào!

MongoDB - Create Collection

MongoDB là gì?

Trước khi bắt đầu tạo các collection, hãy dành một chút thời gian để hiểu MongoDB là gì. Hãy tưởng tượng bạn có một cái hộp lớn để lưu trữ mọi thứ - đó chính là MongoDB, nhưng cho dữ liệu. Nó là một loại cơ sở dữ liệu cho phép bạn lưu trữ và quản lý thông tin theo một định dạng linh hoạt, dựa trên tài liệu.

Collection là gì?

Trong MongoDB, một collection giống như một thư mục nơi bạn lưu trữ các tài liệu liên quan. Nếu bạn quen thuộc với các cơ sở dữ liệu truyền thống, bạn có thể nghĩ của một collection như một bảng. Tuy nhiên, các collection trong MongoDB linh hoạt hơn nhiều - chúng không yêu cầu cấu trúc cố định, điều này có nghĩa là bạn có thể lưu trữ các loại tài liệu khác nhau trong cùng một collection.

Phương thức createCollection()

Bây giờ, hãy đến với phần thú vị - tạo các collection! MongoDB cung cấp cho chúng ta một phương thức tiện lợi gọi là createCollection() để làm điều đó. Nó giống như một cây c_magic wand có thể tạo ra các thư mục mới cho dữ liệu của chúng ta chỉ với một lệnh đơn giản.

Cú pháp cơ bản

Dưới đây là cú pháp cơ bản để tạo một collection:

db.createCollection(name, options)

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

  • db tham chiếu đến cơ sở dữ liệu hiện tại bạn đang làm việc.
  • createCollection là phương thức chúng ta đang sử dụng.
  • name là một chuỗi xác định bạn muốn gọi collection mới của mình là gì.
  • options là một tham số tùy chọn nơi bạn có thể đặt các cấu hình khác nhau cho collection của mình.

Tạo một Collection đơn giản

Hãy bắt đầu với một ví dụ cơ bản. Giả sử chúng ta đang xây dựng một cơ sở dữ liệu thư viện và muốn tạo một collection cho sách:

db.createCollection("books")

Lệnh này tạo một collection mới có tên là "books" trong cơ sở dữ liệu hiện tại của bạn. Đơn giản phải không? Nó giống như nói với MongoDB, "Hey, tôi cần một thư mục mới cho sách của tôi!"

Tạo một Collection với các tùy chọn

Bây giờ, hãy làm cho nó trở nên稍微 phức tạp hơn. MongoDB cho phép chúng ta đặt các tùy chọn khác nhau khi tạo một collection. Dưới đây là một ví dụ:

db.createCollection("readers", {
capped: true,
size: 5242880,
max: 5000
})

Trong ví dụ này, chúng ta đang tạo một collection có tên "readers" với một số tùy chọn cụ thể:

  • capped: true có nghĩa là collection này có kích thước cố định.
  • size: 5242880 đặt kích thước tối đa của collection là 5 megabytes.
  • max: 5000 giới hạn collection tối đa 5000 tài liệu.

Hãy tưởng tượng điều này như tạo một kệ sách đặc biệt chỉ có thể chứa một số lượng nhất định sách hoặc có giới hạn trọng lượng.

Các tùy chọn thường dùng

Hãy xem xét một số tùy chọn thường được sử dụng khi tạo các collection:

Tùy chọn Mô tả
capped Boolean. Nếu true, tạo một collection capped.
size Number. Xác định kích thước tối đa theo byte cho một collection capped.
max Number. Xác định số lượng tài liệu tối đa cho phép trong một collection capped.
validator Document. Xác định các quy tắc kiểm tra cho collection.
validationLevel String. Xác định mức độ nghiêm ngặt mà MongoDB áp dụng các quy tắc kiểm tra.
validationAction String. Xác định liệu MongoDB nên lỗi khi tài liệu không hợp lệ hay chỉ cảnh báo.

Ví dụ thực tế

Ví dụ 1: Tạo một Collection Capped cho Logs

Hãy tưởng tượng bạn đang xây dựng một hệ thống cần theo dõi các log mới nhất, nhưng bạn không muốn nó tăng vô hạn:

db.createCollection("systemLogs", {
capped: true,
size: 10485760,  // 10 MB
max: 10000
})

Lệnh này tạo một collection sẽ lưu trữ các log hệ thống, nhưng nó chỉ giữ lại các mục nhập mới nhất, lên đến 10 MB hoặc 10.000 tài liệu, tùy thuộc vào điều kiện nào đến trước. Nó giống như một sổ tay tự động xóa các ghi chú cũ để nhường chỗ cho các ghi chú mới!

Ví dụ 2: Tạo một Collection Được Kiểm Tra cho Hồ Sơ Người Dùng

Bây giờ, hãy giả sử chúng ta muốn đảm bảo rằng tất cả các hồ sơ người dùng trong cơ sở dữ liệu của chúng ta có tên và email hợp lệ:

db.createCollection("userProfiles", {
validator: {
$jsonSchema: {
bsonType: "object",
required: ["name", "email"],
properties: {
name: {
bsonType: "string",
description: "phải là một chuỗi và là bắt buộc"
},
email: {
bsonType: "string",
pattern: "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",
description: "phải là một địa chỉ email hợp lệ và là bắt buộc"
}
}
}
}
})

Ví dụ này tạo một collection với một kiểm tra đảm bảo rằng mỗi tài liệu có tên (phải là một chuỗi) và một địa chỉ email hợp lệ. Nó giống như có một thủ thư严格的 không cho bạn mượn sách unless bạn điền đầy đủ thông tin thẻ thư viện của bạn!

Kiểm tra xem một Collection đã tồn tại hay chưa

Trước khi tạo một collection mới, thường là một ý tưởng tốt để kiểm tra xem nó đã tồn tại hay chưa. Dưới đây là cách bạn có thể làm điều đó:

if (!db.getCollectionNames().includes("myNewCollection")) {
db.createCollection("myNewCollection")
print("Collection được tạo thành công!")
} else {
print("Collection đã tồn tại!")
}

Lệnh này kiểm tra xem "myNewCollection" đã tồn tại hay chưa. Nếu không, nó tạo collection và in ra một thông báo thành công. Nếu đã tồn tại, nó chỉ đơn giản thông báo cho bạn. Nó giống như kiểm tra xem bạn đã có một thư mục cho một chủ đề cụ thể trước khi tạo một mới!

Kết luận

Chúc mừng! Bạn đã học được các основы создания коллекций в MongoDB. Nhớ rằng, các collection là các контейнеры гибкие для ваших данных, а метод createCollection() - это ваш инструмент для их настройки так, как вам нужно.

While you continue your MongoDB journey, you'll discover even more ways to customize and optimize your collections. But for now, pat yourself on the back - you're well on your way to becoming a MongoDB master!

Keep practicing, stay curious, and happy coding! Remember, in the world of databases, you're the architect of your data's home. Make it comfortable, efficient, and exactly what your data needs!

Credits: Image by storyset