MongoDB là một cơ sở dữ liệu NoSQL phổ biến, nổi bật với khả năng lưu trữ dữ liệu dưới dạng tài liệu. Trong MongoDB, một trong những khái niệm quan trọng nhất là collection. Bài viết này sẽ giúp bạn hiểu rõ về collection, cách tổ chức dữ liệu bên trong nó, và các điểm khác biệt so với các cơ sở dữ liệu quan hệ.
Collection là một tập hợp các tài liệu (documents) trong MongoDB. Mỗi collection tương tự như một bảng trong cơ sở dữ liệu quan hệ, nhưng với sự linh hoạt hơn trong việc tổ chức và lưu trữ dữ liệu. Các tài liệu trong một collection có thể có cấu trúc khác nhau, cho phép người dùng lưu trữ dữ liệu mà không cần tuân theo một schema cứng nhắc.
Khi tổ chức dữ liệu trong một collection, có một số điểm quan trọng cần lưu ý:
Mỗi tài liệu trong collection có thể chứa các trường (fields) khác nhau. Dưới đây là một ví dụ về một tài liệu trong collection users
:
{ "_id": ObjectId("60f7c4b4c7f65f54e4e4f8e1"), "name": "Nguyen Van A", "email": "[email protected]", "age": 30, "address": { "street": "123 Main St", "city": "Hanoi", "country": "Vietnam" }, "hobbies": ["reading", "travelling"] }
Trong ví dụ này, tài liệu chứa các trường khác nhau như name
, email
, age
, và một trường nhúng address
, cùng với một mảng hobbies
.
MongoDB cho phép bạn nhúng dữ liệu trong tài liệu. Điều này có nghĩa là bạn có thể lưu trữ một tài liệu con (sub-document) bên trong một tài liệu cha. Nhúng dữ liệu giúp giảm thiểu số lượng truy vấn cần thiết để lấy thông tin liên quan.
Ngoài việc nhúng dữ liệu, bạn cũng có thể phân tách dữ liệu thành nhiều collection khác nhau. Điều này giúp tổ chức dữ liệu một cách có hệ thống hơn và cho phép thực hiện các truy vấn một cách hiệu quả hơn. Ví dụ, bạn có thể tạo các collection riêng cho users
, products
, và orders
trong một ứng dụng thương mại điện tử.
Để truy vấn dữ liệu trong collection, bạn có thể sử dụng các phương thức như find()
, aggregate()
, và nhiều toán tử khác. Ví dụ:
db.users.find({ age: { $gt: 25 } });
Truy vấn này sẽ tìm tất cả người dùng có độ tuổi lớn hơn 25.
So với cơ sở dữ liệu quan hệ, collection trong MongoDB có những điểm khác biệt đáng chú ý:
Tóm lại, collection trong MongoDB là một khái niệm cốt lõi cho phép tổ chức và lưu trữ dữ liệu một cách linh hoạt và hiệu quả. Với khả năng nhúng và phân tách dữ liệu, cùng với việc loại bỏ yêu cầu về schema cố định, MongoDB mang đến một phương thức lưu trữ dữ liệu tiên tiến, phù hợp với các ứng dụng hiện đại.