# 排除 slides 字段(巨大 Base64 圖片數組)
db.lessons.find({}, {slides: 0})
# 僅返回 name、contribs,排除 _id
db.bios.find({}, {name: 1, contribs: 1, _id: 0})
# 時間範圍 + 內容枚舉
db.wemessages.find({
$and: [
{CreateTime: {$gt: startTime}},
{CreateTime: {$lt: endTime}},
{Content: {$in: ['1','2','3','4','5']}}
]
})
# $set 精確更新指定字段(推薦)
db.lessons.update({}, {$set: {'course_id': 'c.101'}})
# 多文檔更新
db.lessons.update({}, {$set: {'course_id': 'c.101'}}, {multi: true})
db.muusers.update({username: 'tom'}, {$set: {mobile: '6508639713'}}, {multi: true})
# 排序:-1 降序,1 升序
db.muusers.find().sort({firsttime: -1})
# 美化輸出
db.lessons.find({lesson: 1}, {slides: 0}).pretty()
# 分頁
db.translation_memory.find({mp3voice: {$exists: false}}, null, {limit: 100})
# 生產環境推薦游標分頁:_id > last_id
# 字段不存在
db.questions.find({'sequence_id': 1, 'pngslide': {$exists: false}})
db.mycollection.find({"price": {$exists: false}})
# 重命名集合
db.quizzes.renameCollection('questions')
# 刪除字段
db.questions.update({}, {$unset: {quiz_name: 1}}, {multi: true})
# 重命名字段
db.students.update({_id: 1}, {$rename: {'nickname': 'alias', 'cell': 'mobile'}})
# 刪除集合所有數據
db.collection.remove({})
db.lessons.find({lesson: 1}).toArray()[0].slides.join('').length
db.orders.aggregate([
{$match: {status: 'paid'}},
{$group: {_id: '$user_id', total: {$sum: '$amount'}, count: {$sum: 1}}},
{$sort: {total: -1}},
{$limit: 10}
])
# 創建單字段索引
db.users.createIndex({email: 1})
# 複合索引(順序關鍵,符合最左前綴)
db.orders.createIndex({user_id: 1, status: 1, create_time: -1})
# 文本索引
db.articles.createIndex({title: 'text', content: 'text'})
# TTL 索引(自動過期)
db.sessions.createIndex({expireAt: 1}, {expireAfterSeconds: 0})
# 查看/刪除索引
db.collection.getIndexes()
db.collection.dropIndex('email_1')
# 查看當前操作
db.currentOp()
# 終止長耗時操作
db.killOp(opid)
# 數據庫統計
db.stats()
# 集合統計
db.collection.stats()
# 磁盤使用
db.runCommand({collStats: 'collection'})
# 備份/恢復
mongodump --db test --out /backup
mongorestore --db test /backup/test
group、system 等會報錯,改用其他名稱。multi: false,批量更新必須顯式 {multi: true} 或用 updateMany()。收藏此速查表,覆蓋 90% 日常 MongoDB 開發運維場景,持續更新中...