在開發應用程式時,光靠程式記憶體是無法保存資料的,一旦伺服器重啟,資料就會消失。
因此我們需要 資料庫 (Database),讓資料能 持久化保存,例如:
在眾多資料庫中,MongoDB 是最受歡迎的 NoSQL(非關聯式資料庫) 之一。
MongoDB 常用於搭配 Node.js ,非常適合做 RESTful API、使用者登入系統、即時服務 等應用。
在學 MongoDB 之前,先來理解它和傳統關聯式資料庫 (SQL) 的差異。
代表:MySQL、PostgreSQL、SQL Server、Oracle
範例 SQL 查詢:
SELECT users.name, orders.item
FROM users
JOIN orders ON users.id = orders.user_id;
👉 適合:需要嚴格一致性與高結構性的系統,例如金融、ERP、電商。
代表:MongoDB、Redis、Cassandra、DynamoDB
MongoDB 文件範例:
{
"name": "Howard",
"orders": [
{ "item": "Laptop", "price": 30000 },
{ "item": "Mouse", "price": 500 }
]
}
👉 適合:高併發、快速迭代、即時應用(聊天、IoT、大數據分析)。
特性 | 關聯式 (SQL) | 非關聯式 (NoSQL) |
---|---|---|
資料結構 | 表格 (Table) | 文件 (Document) / Key-Value |
Schema | 嚴格固定 | 彈性,可隨時改變 |
關聯性 | 外鍵 JOIN | 嵌套或手動關聯 |
查詢語言 | SQL | API (如 MongoDB 查詢語法) |
適合場景 | 金融、ERP、電商 | 即時應用、大數據、彈性開發 |
擴展性 | 垂直擴展 (Scale-up) | 水平擴展 (Scale-out) |
mongod
→ MongoDB 伺服器mongo
→ Mongo Shell (CLI 工具)安裝官方驅動:
npm install mongodb
建立 index.js
測試程式:
import { MongoClient } from "mongodb";
const url = "mongodb://localhost:27017"; // 與 Compass 相同
const client = new MongoClient(url);
export async function connectDB() {
try {
await client.connect() // 1) 連線
console.log('✅ 已連接 MongoDB')
const db = client.db('testdb') // 2) 指定資料庫
const users = db.collection('users') // 3) 指定集合(類似資料表)
// 4) 新增資料
await users.insertOne({name: 'Howard', age: 30, createdAt: new Date()})
// 5) 查詢資料
const data = await users.find().toArray()
console.log('📌 資料:', data)
} catch (err) {
console.error('❌ 連接或操作失敗:', err)
} finally {
await client.close() // 6) 關閉連線
}
}
connectDB()
打開 MongoDB Compass
在「連線字串」輸入與程式相同的 URI:
mongodb://localhost:27017
按下 Connect 連線到本機資料庫
在左側清單找到 testdb
→ 點進去 users
就能看到剛剛程式插入的 { name: "Howard", age: 30 }
🎉
今天我們完成了 MongoDB 的入門: