跳到內容

MongoDB

MongoDB 是流行的文件型 NoSQL 資料庫,使用 JSON 格式儲存資料,特別適合需要靈活資料結構的應用。

  1. 在控制面板進入「資料庫」頁面
  2. 選擇「MongoDB」
  3. 選擇版本(建議使用 MongoDB 7)
  4. 設定參數:
參數說明範例
服務名稱容器識別名稱my-mongodb
Root 帳號管理員帳號admin
Root 密碼管理員密碼(自動產生)
初始資料庫預設建立的資料庫myapp
Terminal window
# MongoDB 連線字串
mongodb://admin:password@mongodb-container:27017/myapp?authSource=admin
// Node.js (mongoose)
const mongoose = require('mongoose');
await mongoose.connect(process.env.MONGODB_URL);
# Python (pymongo)
from pymongo import MongoClient
client = MongoClient(os.environ['MONGODB_URL'])
db = client.myapp
// 建立索引以提升查詢效能
db.users.createIndex({ email: 1 }, { unique: true });
db.posts.createIndex({ createdAt: -1 });
db.products.createIndex({ name: "text", description: "text" });
Terminal window
# 匯出集合
mongoexport --uri="mongodb://admin:password@mongodb:27017/myapp?authSource=admin" \
--collection=users --out=users.json
# 匯入資料
mongoimport --uri="mongodb://admin:password@mongodb:27017/myapp?authSource=admin" \
--collection=users --file=users.json
# 完整資料庫備份
mongodump --uri="mongodb://admin:password@mongodb:27017/myapp?authSource=admin" \
--out=/backup/
# 還原資料庫
mongorestore --uri="mongodb://admin:password@mongodb:27017/myapp?authSource=admin" \
/backup/myapp/

MongoDB 的 WiredTiger 儲存引擎預設使用可用記憶體的 50% 作為快取:

# 自訂 WiredTiger 快取大小
storage:
wiredTiger:
engineConfig:
cacheSizeGB: 1
  • 為常用的查詢欄位建立索引
  • 使用複合索引優化多欄位查詢
  • 避免過多索引,因為索引會增加寫入開銷
  • 定期使用 explain() 分析查詢計畫

確認連線字串中包含 authSource=admin 參數,且帳號密碼正確。

MongoDB 會盡可能使用可用記憶體來快取資料。你可以透過設定 cacheSizeGB 來限制記憶體使用量。對於 1 GB RAM 的 VPS,建議將快取設為 256 MB 至 512 MB。