Tìm hiểu nhanh về MongoDB và Robo 3T trong 10 phút
Bài đăng này đã không được cập nhật trong 4 năm
1. MongoDB là gì?
Chúng ta đã quá quen thuộc với relational database kiểu bảng truyền thống với các cột cố định, bản ghi nào cũng có ngần đấy cột (dữ liệu của cột có thể là Null). Và việc này đôi khi là một trở ngại nếu chúng ta cần có một database linh động và mạnh mẽ hơn. Đó chính là lí do MongoDB ra đời. MongoDB là một hệ database dạng document, nó lưu trữ data dưới dạng các JSON document.
Sự khác nhau giữa MongoDB với relational database như MySQL đó 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.
Đây là một ví dụ về một JSON document (bản ghi) chứa thông tin về user:
Trong đó chúng ta có thể thấy được các thông tin đơn giản (như firstname, lastname) cùng những thông tin phức tạp (như address, phải lồng cả những dữ liệu con ở bên trong như street, city,... ) được thể hiện một cách rất đơn giản, hiệu quả và linh động - điều mà relational database kiểu bảng truyền thống sẽ không bao giờ làm được
2. Các khái niệm cơ bản
Thật ra nếu chúng ta đã biết sử dụng MySQL thì việc làm quen với MongoDB chỉ là chuyện nhỏ bởi vì chúng có những khái niệm tương đồng nhau. Để dễ hình dung và so sánh, mình sẽ tạo một bảng để match các khái niệm giữa 2 hệ CSDL này với nhau như dưới đây:
MySQL | MongoDB |
---|---|
Database | Database |
Table | Collection |
Row | Document |
Column | Field |
Table Join | Embedded Documents |
Primary Key | Primary Key |
Chúng ta cần chú ý đến 2 khái niệm Collection và Document:
- 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 là một bản ghi 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.
Dữ liệu trong Collection, Document 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. Đây là một ví dụ về 1 Collection có tên là "Employees" chứa các Document về nhân viên của công ty. Mỗi Document chứa thông tin của một nhân viên.
3. Sử dụng MongoDB với Robo 3T
Robo 3T là một tool giúp chúng ta sử dụng MongoDB một cách đơn giản và hiệu quả hơn. Để tải phần mềm này, bạn truy cập vào trang web https://robomongo.org/download, có 2 phiên bản là Studio 3T (trả phí) và Robo 3T (free). Ở đây mình sẽ demo trên bản free. Vì với vai trò là QA Tester của dự án thì mình cũng chỉ có nhu cầu truy vấn và update data thôi nên bản free đáp ứng đủ nhu cầu của mình. Và quan trọng là nó FREE =)))
Sau khi cài đặt xong thì các bạn chọn tạo mới 1 connection để kết nối đến database của mình (localhost hoặc trên cloud)
Sau đó nhập vào thông tin của host
Click vào Test để kiểm tra kết nối
Sau khi bấm Save nó sẽ xuất hiện trên màn hình MongoDB Connections cho bạn chọn
Click vào connect để kết nối tới MongoDB. Kết nối thành công xong bạn sẽ thấy giao diện sử dụng của Robo 3T như sau. Bên trái là danh sách các database
Để tạo 1 database các bạn chọn Create Database
Đặt tên cho database và chọn Create
Sau khi tạo xong thì database của bạn sẽ xuất hiện ở khung bên trái
Tiếp theo chúng ta sẽ tạo một Collections mới (tương đương với việc tạo 1 Table)
Đặt tên cho Collections
Tạo database và collections xong xuôi, cuối cùng là chúng ta tạo 1 document (tạo 1 bản ghi)
Document được lưu dưới dạng JSON nên chúng ta có thể thêm các trường như nào tuỳ ý, miễn là viết theo format của file JSON
Truy vấn các Document trong 1 Collection bằng giao diện
Hoặc bằng câu lệnh
Việc update hay xoá bản ghi thi cũng tương tự, các bạn click chuột phải vào Document cần update/xoá và chọn Edit/Delete Document.
Vậy là xong! Trên đây chỉ là những câu lệnh CRUD căn bản thường dùng, các lệnh truy vấn phức tạp hơn các bạn có thể tham khảo trên trang chủ của MongoDB có hướng dẫn rất chi tiết và cụ thể.
References: https://docs.mongodb.com/manual/core/databases-and-collections/ https://stackjava.com/mongodb/cai-dat-va-su-dung-robo-3t-robomongo-tren-windows.html
All rights reserved