- MongoDB là gì? Các khái niệm trong MongoDB
- Hướng dẫn cài đặt, cấu hình MongoDB trên Windows 10
- Cài đặt và sử dụng Robo 3T (RoboMongo) trên Windows
- Hướng dẫn cài đặt MongoDB trên Linux (Ubuntu 16.04)
- Hướng dẫn MongoDB – Tạo database trong MongoDB
- Hướng dẫn MongoDB – Xóa, DROP database trong MongoDB
- Tạo bảng, collections trong MongoDB (Tạo bằng dòng lệnh, Robo3t)
- Xóa bảng, collections trong MongoDB (Xóa bằng lệnh/ Robo3T)
- Insert document, bản ghi trong MongoDB (Insert bằng lệnh, Robo3T)
- Truy vấn dữ liệu/document, find(), Select, Where trong MongoDB
- Xóa document, row trong MongoDB (bằng dòng lệnh, Robo3T)
- Update document, dữ liệu trong MongoDB
- Projection trong MongoDB (SELECT field/column trong MongoDB)
- Sắp xếp trong MongoDB(orderBy, sorting() trong MongoDB)
- Ưu nhược điểm của MongoDB, khi nào nên dùng MongoDB
- Xóa cột, field, trường của collections trong MongoDB ($unset)
- Kiểm tra null, check tồn tại trong MongoDB với $exists
- Đổi tên field trong MongoDB với $rename
- Tạo user/roles, phân quyền người dùng trên MongoDB
- Các loại roles, vai trò, quyền trong MongoDB.
- Đăng nhập mongodb với username và password (database mongo)
- Tạo Replica Set trong MongoDB, Ví dụ Replica Set MongoDB
- Replication, Replica Set trong MongoDB là gì?
- Phân trang trong MongoDB (skip(), limit() paging trong MongoDB)
MongoDB là gì? Các khái niệm trong MongoDB
MongoDB là gì?
MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở.
Sự khác nhau giữa MongoDB với các hệ quản trị cơ sở dữ liệu quan hệ (RELATIONAL DATABASE MANAGEMENT SYSTEM – RDBMS) như MySQL, MS SQL… đó là lưu dữ liệu dạng NoSQL tức là không có sự ràng buộc giữa các bảng.
MongoDB là document database – database hướng tài liệu.
Dữ liệu trong MongoDB lưu dưới dạng json. Do đó có thể hiểu document database ở đây nghĩa là dữ liệu lưu trữ kiểu text/json, chứ không lưu theo kiểu bảng, cột với kiểu dữ liệu byte, clob… như trong RDBMS.
Một số khái niệm trong MongoDB
Khi làm việc với MongoDB bạn sẽ gặp các khái niệm sau:
Collection, Document, Embeded documents, linking, Primary Key. Vậy chúng là gì?
RDBMS | MongoDB |
Database | Database |
Table | Collection |
Row | Document |
Column | Field |
Table Join | Embedded Documents |
Primary Key | Primary Key (mặc định là _id) |
Chắc hẳn bạn sẽ tự hỏi tại sao không dùng luôn mấy khái niệm table, row… đi cho dễ nhớ còn bày đặt ra Collection, document là gì. Có lý do của nó nhé.
- Collection: Collection là một nhóm các dữ liệu thuộc cùng loại do người dùng qui định, sự khác nhau giữa collection với table trong RDBMS đó là collection không có ràng buộc, quan hệ với collection khác. Mỗi dữ liệu trong collection không cố định về số trường như row trong table.
- Document: Document là một tài liệu lưu trữ dưới dạng json. Nó tương đương với row trong table của RDBMS nhưng dữ liệu trong document khá linh hoạt, nó không cố định có bao nhiêu trường, dữ liệu trong mỗi trường phải là cố định.
- Embedded Documents: Nếu trong RDBMS, chúng ta có kiểu join các bảng, ví dụ bảng person join với bảng address để biết một person có những address nào thì trong MongoDB, document của person sẽ chứa 1 array các document address.
- Primary Key: Mặc định primary key trong MongoDB là field _id, lúc insert nếu bạn không chỉ rõ trường _id thì nó sẽ tự động generate giá trị cho _id.
Bạn thấy đấy, dữ liệu trong Collection, Document khác hẳn với Table, Row.
Nó rất linh hoạt, bạn thích insert gì vào cũng được, không cứ phải một kiểu cố định, số lượng field cố định.
Ví dụ:
Dưới đây là một document trong MongoDB:
{ "_id" : ObjectId("5b5ddca8e25fd6f9fb473087"), "name" : "kai", "age" : 27, "address" : [ "vietnam", "korean" ] }
Nếu là trong RDBMS thì ta sẽ có 2 table:
- table person (id, name, age)
- table address: (id, descript, person) trong đó person link tới table person.
Nhưng khi cấu trúc của dữ liệu thay đổi thì bạn sẽ phải sửa cột, sửa bảng… còn MongoDB thì không.
Chẳng hạn như adress có thêm thông tin như province, street… column age chuyển sang kiểu text, hay thêm column mới là gender thì với MongoDB ta chỉ cần thêm dữ liệu rồi insert bình thường:
{ "_id" : ObjectId("5b5ddeb7e25fd6f9fb4730c6"), "name" : "kai", "age" : "27", "address" : [ { "country" : "viet nam", "province" : "ha noi", "street" : "nguyen trai" }, { "country" : "korea", "province" : "seoul" } ], "gender" : "male" }
Ưu nhược điểm của MongoDB
Phần ưu nhược điểm của MongoDB mình tách ra một bài riêng, vì mình muốn giải thích chi tiết hơn.
Ưu nhược điểm của MongoDB, khi nào nên dùng MongoDB
MongoDB là gì? Các khái niệm trong MongoDB stackjava.com
Okay, Done!
References: