MongoDB
MongoDB 是流行的文件型 NoSQL 資料庫,使用 JSON 格式儲存資料,特別適合需要靈活資料結構的應用。
建立 MongoDB
Section titled “建立 MongoDB”- 在控制面板進入「資料庫」頁面
- 選擇「MongoDB」
- 選擇版本(建議使用 MongoDB 7)
- 設定參數:
| 參數 | 說明 | 範例 |
|---|---|---|
| 服務名稱 | 容器識別名稱 | my-mongodb |
| Root 帳號 | 管理員帳號 | admin |
| Root 密碼 | 管理員密碼 | (自動產生) |
| 初始資料庫 | 預設建立的資料庫 | myapp |
# MongoDB 連線字串mongodb://admin:password@mongodb-container:27017/myapp?authSource=admin應用連線範例
Section titled “應用連線範例”// Node.js (mongoose)const mongoose = require('mongoose');await mongoose.connect(process.env.MONGODB_URL);# Python (pymongo)from pymongo import MongoClientclient = MongoClient(os.environ['MONGODB_URL'])db = client.myapp建立集合與索引
Section titled “建立集合與索引”// 建立索引以提升查詢效能db.users.createIndex({ email: 1 }, { unique: true });db.posts.createIndex({ createdAt: -1 });db.products.createIndex({ name: "text", description: "text" });資料匯出與匯入
Section titled “資料匯出與匯入”# 匯出集合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 參數,且帳號密碼正確。
記憶體使用過高
Section titled “記憶體使用過高”MongoDB 會盡可能使用可用記憶體來快取資料。你可以透過設定 cacheSizeGB 來限制記憶體使用量。對於 1 GB RAM 的 VPS,建議將快取設為 256 MB 至 512 MB。