本文記錄 MongoDB 在 Linux 環境下的安裝、啟動、用戶權限配置、常用 Shell 命令及基本 CRUD 操作,適合快速上手與查閱。
# 下載並解壓
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-6.0.tgz
tar -zxvf mongodb-linux-x86_64-6.0.tgz
# 建立資料目錄並啟動
mkdir -p /data/db
./bin/mongod --dbpath=/data/db --fork --logpath=/var/log/mongodb.log
# 進入 Shell
./bin/mongo
createUser)> use admin
> db.addUser("admin", "strongPass") # 建立管理員
> db.auth("admin", "strongPass") # 驗證
> use mydb
> db.addUser("rwUser", "pass", false) # 讀寫用戶
> db.addUser("roUser", "pass", true) # 唯讀用戶 (第三參數 true)
> db.system.users.find() # 查看用戶
> db.system.users.remove({user:"oldUser"}) # 刪除用戶
| 分類 | 命令 | 說明 |
|---|---|---|
| 庫/集合 | show dbs | 列出所有資料庫 |
| use <db> | 切換/建立資料庫 | |
| show collections | 列出集合 (相當於表) | |
| db.createCollection("coll", {capped:true, size:100000}) | 建立固定大小集合 | |
| CRUD | db.coll.insert({a:1}) | 插入文件 |
| db.coll.find({a:1}) | 查詢 | |
| db.coll.update({a:1}, {$set:{b:2}}, false, true) | 更新 (upsert=true) | |
| db.coll.remove({a:1}) | 刪除 | |
| db.coll.findAndModify({query:{}, update:{}, remove:true}) | 原子查詢修改/刪除 | |
| 索引 | db.coll.ensureIndex({a:1}) | 建立單欄升序索引 |
| db.coll.getIndexes() | 查看索引 | |
| db.coll.dropIndex("a_1") | 刪除索引 |
WHERE age > 22 → {age: {$gt: 22}}WHERE name LIKE '%mongo%' → {name: /mongo/}SELECT name, age FROM t WHERE age > 25 → db.t.find({age:{$gt:25}}, {name:1, age:1})ORDER BY age DESC LIMIT 10 SKIP 20 → .sort({age:-1}).skip(20).limit(10)COUNT(*) WHERE age >= 25 → db.t.find({age:{$gte:25}}).count()// 游標迭代
var cursor = db.users.find();
while(cursor.hasNext()) printjson(cursor.next());
// forEach 處理
db.users.find().forEach(function(doc){ print(doc.name); });
// 轉陣列 (小心記憶體)
var arr = db.users.find().toArray();
db.stats()、db.coll.stats()、db.coll.totalIndexSize():空間佔用db.serverStatus()、db.currentOp():效能診斷db.getPrevError()、db.resetError():錯誤追蹤掌握上述基礎操作,即可應付開發測試與初期生產維運。生產環境請務必啟用認證、配置 Replica Set、設定備份策略與監控告警。