Việc bắt đầu với MongoDB đôi khi có thể khiến người mới cảm thấy bối rối vì mô hình lưu trữ dạng document khác hoàn toàn so với SQL truyền thống. Nhưng thực tế, MongoDB lại rất trực quan và linh hoạt nếu bạn nắm được cách tạo database và collection ngay từ những bước đầu tiên.
Đọc bài viết này để hiểu rõ hơn về:
- Cần chuẩn bị gì trước khi tạo database?
- Các cách tạo database trong MongoDB (Compass, mongosh, Python).
- Các thao tác quản lý database
Tổng quan về MongoDB
MongoDB là một cơ sở dữ liệu NoSQL dạng document, lưu trữ dữ liệu trong các document BSON (Binary JSON) và tổ chức theo collection. Nhờ mô hình này, bạn không cần tạo bảng hay định nghĩa schema cố định như SQL. Trên thực tế, MongoDB sẽ tự động tạo database và collection khi bạn thêm document đầu tiên, giúp việc khởi đầu trở nên đơn giản và linh hoạt hơn.
Cơ chế schema linh hoạt cũng là một điểm mạnh của MongoDB khi mỗi document trong cùng một collection có thể chứa các trường khác nhau mà MongoDB vẫn xử lý bình thường. Điều này đặc biệt phù hợp với những ứng dụng có dữ liệu thay đổi nhanh hoặc những bạn mới bắt đầu làm quen với NoSQL.
Để thao tác với MongoDB, ta có thể dùng MongoDB Compass (giao diện đồ họa trực quan), mongosh (dòng lệnh) hoặc các drivernhư Node.js, Python, Java… Tất cả đều hỗ trợ việc tạo database một cách tự nhiên thông qua thao tác chèn document hoặc tạo collection.
Tìm hiểu chi tiết hơn về MongoDB là gì và mô hình document là gì.
Chuẩn bị trước khi tạo database
Trước khi bắt đầu tạo một database trong MongoDB, bạn cần đảm bảo đã chuẩn bị đầy đủ môi trường làm việc:
- Cài đặt MongoDB (bản Community hoặc sử dụng MongoDB Atlas trên cloud).
- Nếu làm việc cục bộ, cần chạy MongoDB Server (mongod) để đảm bảo máy chủ hoạt động trên port mặc định 27017 hoặc port tùy chỉnh.
- Cài đặt MongoDB Shell (mongosh) – công cụ CLI chính thức từ MongoDB 5.0+ nếu bạn muốn thao tác bằng dòng lệnh.
- Cài đặt MongoDB Compass nếu bạn thích giao diện trực quan để quản lý database và collection.
- Hoặc nếu làm việc bằng code, cần cài MongoDB Driver tương ứng với ngôn ngữ lập trình (Python, Node.js, Java,…).
Lưu ý: MongoDB không thực sự tạo database cho đến khi bạn insert dữ liệu vào một collection trong database đó. Đây là một đặc điểm quan trọng cần ghi nhớ khi làm việc với MongoDB.
Khi đã có môi trường phù hợp, bạn có thể tạo database theo nhiều cách khác nhau tùy nhu cầu.
Chi tiết cách cài đặt MongoDB và tìm hiểu sâu hơn về MongoDB Compass.
Các cách tạo database và collection
Tạo database với MongoDB Compass GUI
MongoDB Compass là công cụ giao diện trực quan cho phép bạn xem, tạo, chỉnh sửa database và collection mà không cần dùng dòng lệnh. Cách tạo database với Compass như sau:
Mở MongoDB Compass
Trên Linux, bạn có thể mở bằng lệnh:
mongodb-compass
Nếu dùng Windows hoặc macOS bạn chỉ cần mở ứng dụng Compass như bình thường.
Kết nối đến MongoDB
- Nếu bạn dùng MongoDB local, nhập:
mongodb://localhost:27017/
- Nếu bạn dùng MongoDB Atlas, hãy dán connection string dạng:
mongodb+srv://<username>:<password>@<cluster-url>/
- Với Replica Set local, format sẽ là:
mongodb://localhost:27017,localhost:27018,localhost:27019/?replicaSet=rs0
- Sau đó nhấn Connect để kết nối.
Tạo database mới
- Ở thanh menu bên trái, nhấn biểu tượng dấu cộng (+) cạnh chữ Databases.
- Một cửa sổ Create Database sẽ xuất hiện.
Nhập thông tin Database và Collection đầu tiên
- Database Name: tên database bạn muốn tạo
- Collection Name: tên collection đầu tiên (MongoDB yêu cầu phải có ít nhất một collection để database tồn tại)
- Tùy chọn: bật Time-series nếu bạn đang lưu dữ liệu theo dòng thời gian hoặc chọn Capped Collection nếu muốn giới hạn kích thước collection.
Nhấn Create Database
Sau đó database và collection sẽ xuất hiện ngay trong bảng điều hướng bên trái và bạn có thể mở collection để xem, thêm document hoặc tạo thêm các collection khác.
Tạo database với MongoDB Shell
- Mở MongoDB Shell: Mở terminal (Linux/macOS) hoặc Command Prompt (Windows) và chạy lệnh:
mongosh
Lệnh này sẽ khởi chạy MongoDB Shell và mặc định kết nối vào database test (hiển thị dạng test>).
- Chuyển đến (hoặc tạo) database mới: Dùng lệnh
useđể tạo hoặc truy cập database:
use shopDB
Lưu ý: Database chưa xuất hiện ngay lập tức. MongoDB chỉ thực sự tạo database khi bạn chèn dữ liệu vào một collection bất kỳ.
- Kiểm tra các database đang tồn tại: Ta có thể kiểm tra danh sách database bằng lệnh:
show dbs
Hoặc dùng lệnh tương đương:
show databases
Nếu shopDB chưa hiện ra thì điều đó bình thường vì bạn chưa thêm dữ liệu.
- Tạo collection và chèn document đầu tiên: Ví du:
db.products.insertOne({ name: "iPhone 15", price: 999 })
- Trong đó:
dblà biến tham chiếu đến database hiện tạiproductslà tên collection muốn tạo- Document bên trong
{}sẽ khiến MongoDB tự động tạo collection và database nếu chưa tồn tại
- Kiểm tra database đã tạo:
show dbs
Lúc này bạn sẽ thấy shopDB xuất hiện trong danh sách chứng tỏ database đã được tạo thành công.
- Kiểm tra database hiện tại đang sử dụng:
db.getName() /
/ Hoặc đơn giản hơn:
db
Tạo database bằng MongoDB Driver (Python)
- Cài đặt thư viện PyMongo với lệnh:
pip3 install pymongo
Hoặc nếu cần kết nối MongoDB Atlas với DNS SRV:
pip3 install "pymongo[srv]"
- Tạo file Python và kết nối tới MongoDB: Bắt đầu bằng việc import thư viện và tạo kết nối:
from pymongo import MongoClient
client = MongoClient("mongodb://localhost:27017/")
- Nếu bạn dùng MongoDB Atlas, thay chuỗi kết nối bằng URI dạng:
mongodb+srv://<username>:<password>@<cluster-url>/
- Truy cập (hoặc tạo) database và collection:
db = client["shopDB"]
collection = db["products"]
Giống mongosh, database và collection chỉ được tạo khi bạn thêm dữ liệu vào.
- Chèn document đầu tiên để tạo database:
result = collection.insert_one({"name": "Keyboard", "price": 49})
print(f"Document inserted with ID: {result.inserted_id}")
Khi document được thêm vào, MongoDB sẽ tự động tạo database shopDB và collection products nếu chúng chưa tồn tại.
- Kiểm tra database đã tạo bằng cách in danh sách database để xác nhận:
print(client.list_database_names())
Nếu code chạy thành công, bạn sẽ thấy shopDB xuất hiện trong danh sách.
- Hoặc kiểm tra database cụ thể có tồn tại không:
shopDB" in client.list_database_names():
print("Database shopDB đã được tạo!")
Ví dụ full script tạo database hoàn chỉnh:
from pymongo import MongoClient
# Kết nối tới MongoDB local
client = MongoClient("mongodb://localhost:27017/")
# Tạo hoặc truy cập database và collection
db = client["shopDB"]
collection = db["products"]
# Chèn document để tạo database & collection
collection.insert_one({"name": "Keyboard", "price": 49})
# In danh sách các database
print(client.list_database_names())
Một số thao tác quản lý database
Xem danh sách database
- Với mongosh:
show dbs
- Với Python:
print(client.list_database_names())
Chuyển sang một database khác
- Dùng để xác định bạn đang thao tác với database nào. Ví dụ trong có 5 database khác nhau và bạn muốn sử dụng database shopDB, ta dùng
usenhư sau:
use shopDB
- Trong Python, chỉ cần gán lại biến:
db = client["newDatabase"]
Xem các collection trong một database
- Với mongosh:
show collections
- Với Python:
print(db.list_collection_names())
Xóa một database
Để xóa toàn bộ database và tất cả collection bên trong ta dùng drop.
- Với mongosh:
use shopDB
db.dropDatabase()
- Với python:
client.drop_database("shopDB")
Lưu ý: Thao tác này không thể hoàn tác!
Xóa một collection
Nếu chỉ muốn xóa 1 phần dữ liệu mà không xóa cả database, với mongosh ta thực hiện như sau:
db.products.drop()
Trong đó: products là collection cần xoá.
Kiểm tra thông tin database
db.stats()
Lệnh trên sẽ cung cấp tổng quan về số lượng collection, số document, dung lượng lưu trữ,…
- Với Python:
stats = db.command("dbStats")
print(stats)
Đổi tên collection
db.oldName.renameCollection("newName")
Tạo collection với options
db.createCollection("logs", {
capped: true,
size: 10485760, // 10MB
max: 5000 // tối đa 5000 documents
})
Các câu hỏi thường gặp về cách tạo database trong MongoDB
Tại sao database bạn tạo không xuất hiện khi chạy lệnh show dbs?
Vì trong MongoDB, database chỉ được tạo khi có dữ liệu bên trong. Ví dụ lệnh use shopDB chỉ chuyển ngữ cảnh sang database shopDB, nhưng không tạo thật sự. Database chỉ xuất hiện khi bạn chèn ít nhất một document vào một collection. Database rỗng (empty database) sẽ không được hiển thị trong danh sách show dbs.
Có thể đổi tên database trong MongoDB không?
MongoDB không hỗ trợ lệnh đổi tên database. Nếu bạn muốn đổi tên, bạn phải:
- Tạo một database mới
- Sao chép toàn bộ collection từ database cũ sang
- Xóa database cũ
Ví dụ (mongosh):
use newDB
db.oldCollection.copyTo("newCollection")
use oldDB
db.dropDatabase()
use và db.createCollection()khác nhau như thế nào?
Lệnh use chỉ đơn giản là chuyển ngữ cảnh sang database mà bạn muốn làm việc, nhưng nó không tạo database thật sự. MongoDB chỉ tạo database khi có dữ liệu bên trong, nghĩa là bạn phải chèn document hoặc tạo một collection.
Ngược lại, lệnh db.createCollection() tạo ra một collection mới, và nếu database chưa tồn tại thì MongoDB sẽ tự động tạo database đó.
Vì vậy, use chỉ là thao tác điều hướng, còn việc tạo collection hoặc chèn dữ liệu mới chính là bước tạo ra database thực sự.
Tổng kết
Việc tạo database chỉ là bước khởi đầu khi làm việc với MongoDB. Dù bạn sử dụng giao diện trực quan hay thao tác bằng shell hoặc Python, cơ chế hoạt động của MongoDB luôn thống nhất và dễ tiếp cận. Hiểu vững những thao tác cơ bản này sẽ giúp bạn tự tin hơn rất nhiều khi bước vào các chủ đề sâu hơn như schema design, CRUD nâng cao hay vận hành hệ thống MongoDB ở quy mô lớn.
ITviec hy vọng bài viết trên đã cung cấp cho bạn những kiến thức bổ ích về các cách tạo database trong MongoDB.

