Làm việc với cơ sở dữ liệu MongoDB
- 03-03-2026
- Toanngo92
- 0 Comments
Mục lục
2.1 Cài đặt MongoDB Database Tools
MongoDB cung cấp một tập hợp các công cụ giúp người dùng làm việc và quản lý cơ sở dữ liệu.
| Tên công cụ | Mô tả |
|---|---|
| mongodump | Xuất và tạo bản sao lưu nhị phân của cơ sở dữ liệu |
| mongorestore | Khôi phục dữ liệu từ mongodump vào database |
| mongoexport | Xuất dữ liệu sang JSON hoặc CSV |
| mongoimport | Nhập dữ liệu từ CSV, JSON, TSV |
| bsondump | Chuyển file BSON sang JSON |
| mongotop | Theo dõi thời gian đọc/ghi của MongoDB |
| mongofiles | Thao tác file lưu trong MongoDB |
| mongostat | Thống kê insert, delete, update, memory |
| mongosh | Kết nối MongoDB, CRUD, viết script JavaScript |
Cài MongoDB Database Tools trên Windows
- Mở trình duyệt và truy cập:
https://www.mongodb.com/try/download/database-tools - Cuộn xuống và đảm bảo:
- Version: 100.12.2
- Platform: Windows x86_64
- Package: msi
- Nhấn Download
- Sau khi tải xong, chạy file cài đặt
- Trình cài đặt MongoDB Tools 100 mở ra như trong Hình 2.1

Bước 5
Nhấn Next.
Bước 6
Ở trang End-User License Agreement, chọn
“I accept the terms in the License Agreement”.

Bước 7
Giao diện custom Setup hiển thị như hình

Bước 8
Bấm next
Giao diện Ready to Install MongoDB hiển thị như hình

Bước 9
Bấm install
Giao diện hiển thị cài đặt hoàn thành như hình

Bấm Finish
Hiện tại, mongoDB Database Tools đã được cài đặt. Bước tiếp theo là cài đặt biến môi trường cho tệp thực thi. Để cài đặt biến môi trường:
Mở Control Panel trong windows
Trong cửa sổ Control Panel, lựa chọn System and Security hiển thị như hình

Trong cửa sổ System and Security đang mở, bấm System
Trong System -> About đang mở, chọn Advanced System Settings như hình

Cửa sổ System Properties đang mở, lựa chọn Environment Variables như hình

Trong cửa sổ Environment Variables đang mở, dưới khu vực System vvariables, chọn Path và bấm Edit như hình

Trong cửa sổ Edit environment variable, bấm New , sau đó bấm browse để điều hướng tới thư mục mà công cụ làm việc với database được cài đặt.
Bấm OK với tất cả cửa sổ để lưu lại cấu hình
Nạp bộ dữ liệu mẫu vào MongoDB Server
Để nạp một bộ dữ liệu mẫu vào MongoDB Server bằng công cụ mongoimport:
- Sao chép bất kỳ bộ dữ liệu mẫu nào và đặt nó vào ổ C. Trong ví dụ này dùng sample_weatherdata để minh họa.
- Mở command prompt.
- Để chạy MongoDB instance, thực thi lệnh:
"C:\Program Files\MongoDB\Server\8.0\bin\mongod.exe" --dbpath="c:\data\db"
Lệnh được thực thi như [ảnh minh họa] Figure 2.10.

Tùy chọn --dbpath cho biết thư mục database. Nếu MongoDB database server chạy đúng, thông báo waiting for connections sẽ hiển thị như hình

Bây giờ, MongoDB instance mongod đã chạy thành công.
4. Mở một command prompt mới và gõ lệnh:
mongoimport --db sample_weatherdata --collection data --jsonArray --file C:\Sample_dataset\sample_weatherdata\data.json
Lệnh được thực thi như hình

Bộ dữ liệu mẫu hiện đã được import vào instance mongod.
5. Để xác minh, chạy lệnh trong MongoDB shell như sau:
mongosh
Lệnh được thực thi như hình

6. Để xem các database hiện có trong instance mongod này, thực thi:
show dbs
Lệnh được thực thi như hình

Điều này xác nhận rằng dữ liệu mẫu có tên sample_weatherdata đã được import vào instance mongod.
Ghi chú: Lệnh
show dbschỉ hiển thị database khi database đó có ít nhất một document.
Các kiểu dữ liệu trong MongoDB
MongoDB lưu trữ dữ liệu nội bộ theo định dạng BSON. BSON là phần mở rộng của JSON. Nó hỗ trợ tất cả kiểu dữ liệu mà JSON hỗ trợ. Ngoài ra, nó còn hỗ trợ các kiểu khác như date, timestamp, và binary data. Bảng 2.2 mô tả các kiểu dữ liệu có trong MongoDB.
Table 2.2: Datatypes in MongoDB (Bảng 2.2: Các kiểu dữ liệu trong MongoDB)
- String: Dùng để lưu văn bản trong MongoDB. Chuỗi BSON là dạng UTF-8 (Universal Coded Character Set Transformation Format).
Ví dụ: Lưu tên học sinh/nhân viên, chức danh nhân viên, địa chỉ. - Integer: Dùng để lưu số nguyên. MongoDB có 2 biến thể: số nguyên có dấu 32-bit và 64-bit.
Ví dụ: điểm số học sinh, lương nhân viên, số lượng sản phẩm trong kho. - Double: Dùng để lưu số thực dạng dấu chấm động 8 byte.
Ví dụ: nhiệt độ, doanh thu, giá của một mặt hàng.
- Decimal: Dùng để lưu giá trị dấu chấm động thập phân 128-bit.
Ví dụ: các phép tính tài chính và khoa học. - Boolean: Dùng để lưu giá trị true/false.
Ví dụ: lưu giá trị các trườngIs_married,Is_fulltime_employee,Is_passed. - Null: Dùng để lưu giá trị NULL.
Ví dụ: lưu số bằng lái của người không có bằng lái. - Array: Là tập hợp nhiều giá trị cùng kiểu hoặc khác kiểu.
Ví dụ: lưu điểm của học sinh trong 5 môn. - Object: Dùng để lưu embedded documents (tài liệu nhúng).
Ví dụ: lưu mô tả một sản phẩm bao gồm hình dạng, màu sắc, kích thước. - Object ID: Là định danh duy nhất cho mỗi document trong collection. Là chuỗi thập lục phân 12 bytes bao gồm:
- Timestamp (4 bytes)
- Random value (5 bytes) với 3 bytes là machine ID và 2 bytes là process ID
- Counter (3 bytes)
Ví dụ: một ID dạng thập lục phân mà MongoDB gán cho mỗi field mới trong MongoDB, ví dụ"64617a0420cf1016275bd88f".
- Date: Lưu ngày dưới dạng số nguyên có dấu 64-bit, là UTC datetime. Định dạng BSON này lưu được ngày trước/sau 01/01/1970 00:00:00 bằng bit dấu âm/dương. Khi người dùng tạo biến date trong MongoDB, nó trả về ngày dạng chuỗi. Khi tạo bằng keyword
new, MongoDB trả về theo chuẩn ISODate.
Ví dụ:String date: Mon May 15 2025 01:03:25 GMT-0500 (EST)ISODate: 2025-05-15T04:25:48.512Z
- Timestamp: MongoDB dùng nội bộ để duy trì thứ tự các thao tác và sự kiện replication.
Ví dụ: ghi nhận thời điểm một document được cập nhật lần cuối trong môi trường replicated. - Binary Data: Dùng để lưu dữ liệu không phải text như hình ảnh, file hoặc nội dung mã hóa ở dạng nhị phân.
Ví dụ: lưu ảnh hồ sơ (profile picture) trong một field. - Vector Data: Cách dùng mang tính khái niệm trong MongoDB 8.0 để lưu dữ liệu số nhiều chiều (high-dimensional numeric data) như AI embeddings bằng các mảng kiểu Double.
Ví dụ: lưu vector đa chiều phục vụ tìm kiếm ngữ nghĩa hoặc hệ gợi ý.
Làm việc với Database và Collection
Giả sử người dùng muốn tạo một database trong MongoDB và thực hiện một số thao tác trong đó. MongoDB cung cấp một tập lệnh hỗ trợ tạo và xóa database/collection. MongoDB cũng cung cấp lệnh dùng để insert, query, update, delete document trong một collection.
Tạo Database
Giả sử người dùng muốn tạo database tên Student_detail.
Cú pháp tạo database là:
use DATABASE_NAME
Để tạo database tên Student_detail:
- Đảm bảo instance mongod đang chạy.
- Để chạy MongoDB Shell, tại command prompt thực thi:
mongosh
- Để tạo database tên Student_detail, chạy lệnh:
use Student_detail
Lệnh được thực thi như hình

Database tên Student_detail đã được tạo.
Tạo Collection
Giả sử người dùng muốn tạo collection tên Studentinfo trong database Student_detail.
Cú pháp để tạo collection hoặc view là:
db.createCollection(name, options)
Bảng 2.3 mô tả các tham số của lệnh createCollection.
Table 2.3: Parameters of createCollection() Method (Bảng 2.3: Tham số của phương thức createCollection())
- name
- Type: String
- Description: Tham số này chỉ định tên collection sẽ được tạo. Đây là tham số bắt buộc.
- options
- Type: Document
- Description: Tham số tùy chọn. Bao gồm các field quy định entity tạo ra phải là:
- Capped collection: Collection có kích thước cố định. Khi đạt kích thước tối đa, các document cũ nhất sẽ bị xóa để tạo chỗ cho bản ghi mới. Tùy chọn này cần chỉ rõ tham số kích thước và số lượng document tối đa có thể tạo.
- Timeseries collection: Collection chuỗi thời gian lưu các chuỗi điểm dữ liệu (cặp key-value) theo một khoảng thời gian, kèm thời điểm ghi nhận.
- Clustered collection: Collection được lưu theo thứ tự của một clustered index. Một key value xác định thứ tự sắp xếp document trong collection. Tham số này có thể gồm key value field, uniqueness của clustered index và tên index.
- View: View là collection ảo. Nếu tạo view thì phải chỉ định tên source collection hoặc view.
- Tham số này cũng bao gồm field validator cho phép người dùng tạo collection với các quy tắc validation do người dùng định nghĩa.
Để tạo collection tên Studentinfo trong database Student_detail:
- Để chuyển sang database Student_detail, thực thi:
use Student_detail
- Để tạo collection Studentinfo, thực thi:
db.createCollection("Studentinfo")
Lệnh được thực thi như hình

Collection Studentinfo đã được tạo.
3. Để xem collection bên trong database Student_detail, thực thi:
show collections
Lệnh được thực thi như hình

Chèn Document
Document có thể được chèn vào một collection trong database. MongoDB cung cấp tùy chọn để chèn một document hoặc nhiều document vào một collection.
Insert a Single Document (Chèn một document)
Cú pháp để chèn một document vào collection là:
db.collection.insertOne()
Giả sử người dùng muốn chèn một document vào collection Studentname trong database Student_detail.
Để thực hiện tác vụ này, chạy các lệnh:
db.createCollection("Studentname")
db.Studentname.insertOne({"Name": "Richard"})
Lệnh được thực thi như hình

Một document đã được chèn vào collection Studentname.
Giá trị insertedID trong output là định danh duy nhất do MongoDB tạo cho mỗi document. Định danh này thuộc kiểu dữ liệu ObjectId.
Ghi chú: Nếu người dùng cố chèn document vào một collection chưa tồn tại trong database, thì MongoDB sẽ tự động tạo collection đó.
Insert Multiple Documents (Chèn nhiều document)
Cú pháp để chèn nhiều document vào một collection là:
db.collection.insertMany()
Giả sử người dùng muốn chèn ba document vào collection Studentmarks trong database Student_detail.

Query Document
MongoDB cung cấp các lệnh để truy xuất (retrieve) các document từ một collection.
Cú pháp để truy xuất tất cả các document trong một collection là:
db.collection.find()
Giả sử người dùng muốn truy xuất tất cả các document trong collection Studentmarks.
Để thực hiện tác vụ này, chạy lệnh:
db.Studentmarks.find()

(Nội dung hiển thị các document trong collection Studentmarks, bao gồm các trường:_id, Name, Age, Subject1, Subject2.)
Tất cả các document trong collection Studentmarks được truy xuất và hiển thị.
Dưới đây là bản dịch đầy đủ, chi tiết, không rút gọn từ trang 50 trở đi, đúng theo nội dung trong hình anh gửi.
Update Document
MongoDB cung cấp hai phương thức khác nhau để cập nhật document trong một collection.
Các phương thức này có thể được sử dụng để:
- Cập nhật một document
- Cập nhật nhiều document
Update Single Document (Cập nhật một document)
Cú pháp để cập nhật một document là:
db.collection.updateOne(filter, update, options)
Bảng 2.4 mô tả các tham số của phương thức updateOne().
Table 2.4: Parameters of updateOne() Method
| Parameter | Type | Description |
|---|---|---|
| filter | Document | Tham số này xác định tiêu chí lựa chọn dựa trên đó thao tác cập nhật sẽ được thực hiện. Nếu nhiều document thỏa mãn tiêu chí, thì chỉ document đầu tiên được cập nhật. Tham số này là bắt buộc. |
| update | Document | Tham số này xác định sự thay đổi sẽ được áp dụng cho các document đã được lọc. Tham số này là bắt buộc. |
| options | Document | Tham số này xác định một số tùy chọn bổ sung — upsert, writeConcern, collation, arrayFilters và hint — cho phương thức cập nhật. Các tùy chọn này sẽ được tìm hiểu chi tiết trong các phần sau. Tham số này là tùy chọn. |
Giả sử người dùng muốn cập nhật giá trị của trường Name thành “David” khi giá trị hiện tại của trường Name là “Robert”.
Để thực hiện tác vụ này, thực thi lệnh:
db.Studentmarks.updateOne({"Name":"Robert"}, {$set:{"Name":"David"}})
Lệnh được thực thi như minh họa trong Hình 2.21.

Document đã được cập nhật.
Để xem document đã cập nhật, thực thi lệnh:
db.Studentmarks.find()
Lệnh được thực thi như minh họa trong Hình 2.22.

Update Multiple Documents (Cập nhật nhiều document)
Cú pháp để cập nhật nhiều document là:
db.collection.updateMany(filter, update, options)
Giả sử người dùng muốn cập nhật và đặt giá trị của Subject2 thành 99 cho tất cả các document mà giá trị của Subject1 lớn hơn 80.
Để thực hiện tác vụ này, thực thi lệnh:
db.Studentmarks.updateMany({"Subject1":{$gt: 80}}, {$set:{"Subject2":99}})
Lệnh được thực thi như minh họa trong Hình 2.23.

Document đã được cập nhật. Trong lệnh này, $gt là một toán tử so sánh được sử dụng để lọc ra chỉ những document có giá trị của trường Subject1 lớn hơn 80.
Để xem các document đã cập nhật, thực thi lệnh:
db.Studentmarks.find()
Lệnh được thực thi như minh họa trong Hình 2.24.

Ở đây, hai document được cập nhật vì chúng thỏa mãn tiêu chí đã chỉ định.
Delete Document
MongoDB cung cấp hai phương thức khác nhau để xóa document trong một collection.
Các phương thức này có thể được sử dụng để:
- Xóa một document
- Xóa nhiều document
Delete Single Document (Xóa một document)
Cú pháp để xóa một document là:
db.collection.deleteOne(filter, options)
Bảng 2.5 mô tả các tham số của phương thức deleteOne().
Table 2.5: Parameters of deleteOne() Method
| Parameter | Type | Description |
|---|---|---|
| filter | Document | Tham số này xác định tiêu chí lựa chọn dựa trên đó thao tác xóa sẽ được thực hiện. Nếu tiêu chí rỗng được đề cập, thì document đầu tiên được trả về trong collection sẽ bị xóa. Tham số này là bắt buộc. |
| options | Document | Tham số này xác định một số tùy chọn bổ sung — writeConcern, collation và hint — cho phương thức xóa. Các tùy chọn này sẽ được tìm hiểu chi tiết trong các phần sau. Tham số này là tùy chọn. |
Giả sử người dùng muốn xóa document có giá trị của trường Name là “Oliver”.
Để thực hiện tác vụ này, thực thi lệnh:
db.Studentmarks.deleteOne({"Name":"Oliver"})
Lệnh được thực thi như minh họa trong Hình 2.25.

Document có giá trị trường Name là “Oliver” đã bị xóa.
Để xác minh điều này, thực thi lệnh:
db.Studentmarks.find()
Lệnh được thực thi như minh họa trong Hình 2.26.

Dưới đây là bản dịch đầy đủ, chi tiết, không rút gọn phần tiếp theo (trang 56–59 trong ảnh anh gửi).
Delete Multiple Documents (Xóa nhiều document)
Cú pháp để xóa nhiều document là:
db.collection.deleteMany(filter, options)
Bảng 2.6 mô tả các tham số của phương thức deleteMany().
Table 2.6: Parameters of deleteMany() Method
(Bảng 2.6: Các tham số của phương thức deleteMany())
| Parameter | Type | Description |
|---|---|---|
| filter | Document | Tham số này xác định tiêu chí lựa chọn dựa trên đó thao tác xóa sẽ được thực hiện. Nếu tiêu chí rỗng được chỉ định, thì tất cả các document trong collection sẽ bị xóa. Tham số này là bắt buộc. |
| options | Document | Tham số này xác định một số tùy chọn bổ sung — writeConcern, collation và hint — cho phương thức xóa. Các tùy chọn này sẽ được tìm hiểu chi tiết trong các phần sau. Tham số này là tùy chọn. |
Giả sử người dùng muốn xóa tất cả các document mà giá trị của trường Age lớn hơn 14.
Để thực hiện tác vụ này, thực thi lệnh:
db.Studentmarks.deleteMany({"Age": {$gt:14}})
Lệnh được thực thi như minh họa trong Hình 2.27.

Những document có giá trị của trường Age lớn hơn 14 đã bị xóa.
Để xem kết quả, thực thi lệnh:
db.Studentmarks.find()
Lệnh được thực thi như minh họa trong Hình 2.28.

Drop Collection
MongoDB cung cấp một phương thức để loại bỏ (remove) một collection khỏi cơ sở dữ liệu.
Cú pháp để xóa một collection là:
db.collection.drop()
Giả sử người dùng muốn xóa collection có tên Studentmarks khỏi cơ sở dữ liệu Student_detail.
Để thực hiện tác vụ này, thực thi lệnh:
db.Studentmarks.drop()
Lệnh được thực thi như minh họa trong Hình 2.29.

Collection Studentmarks đã bị xóa.
Trong MongoDB, khi một collection bị xóa, tất cả các index liên quan đến collection đó cũng sẽ bị xóa.
Drop Database
MongoDB cung cấp một phương thức để xóa một database.
Cú pháp để xóa một database là:
db.dropDatabase()
Phương thức này sẽ xóa database hiện tại.
Giả sử người dùng muốn xóa database Student_detail.
Để thực hiện tác vụ này, thực thi lệnh:
db.dropDatabase()
Lệnh được thực thi như minh họa trong Hình 2.30.

Database Student_detail đã bị xóa.
Khi một database bị xóa, tất cả các collection và các file dữ liệu liên quan đến database đó cũng sẽ bị xóa.
Ở đây, các collection Studentinfo và Studentname cũng bị xóa.
Bài tập
BÀI TẬP THỰC HÀNH
Sinh viên thực hiện các yêu cầu sau:
-
Cài đặt MongoDB Database Tools và thiết lập biến môi trường (environment variable) cho MongoDB Database Tools.
-
Nạp (import) bộ dữ liệu mẫu sample_training vào MongoDB Server.
-
Tạo một database có tên Employee và một collection có tên Employee_detail.
-
Chèn (insert) các document sau vào collection Employee_detail:
[
{
"Emp_name": "Oliver Smith",
"Age": 23,
"Designation": "Manager"
},
{
"Emp_name": "David Michael",
"Age": 32,
"Designation": "Software Engineer"
}
]
-
Cập nhật (update) chức danh (Designation) của "Oliver Smith" thành "Accountant".
-
Xóa (delete) document trong collection Employee_detail có tên nhân viên là "David Michael".
-
Xóa collection Employee_detail.
-
Xóa database Employee.




