MongoDB集合重命名的完整指南
1. 集合重命名架構(gòu)總覽

2. renameCollection命令詳解
2.1 命令語法結(jié)構(gòu)
db.adminCommand({
renameCollection: "<source_db>.<source_collection>",
to: "<target_db>.<target_collection>",
dropTarget: <boolean>, // 可選
stayTemp: <boolean> // 可選(4.4+)
})
2.2 參數(shù)說明表格
| 參數(shù) | 類型 | 必填 | 描述 | 默認值 |
|---|---|---|---|---|
| renameCollection | string | 是 | 源集合完全限定名 | - |
| to | string | 是 | 目標集合完全限定名 | - |
| dropTarget | boolean | 否 | 是否覆蓋目標集合 | false |
| stayTemp | boolean | 否 | 是否保留臨時狀態(tài) | false |
3. 重命名操作流程圖

4. 不同場景下的重命名操作
4.1 同數(shù)據(jù)庫重命名
// 基本語法
db.adminCommand({
renameCollection: "test.products_old",
to: "test.products_new"
})
// 驗證結(jié)果
use test
show collections
例子:
db.adminCommand({
renameCollection: "mytest_db.products",
to: "mytest_db.products_new"
})
// 驗證結(jié)果
show collections

4.2 跨數(shù)據(jù)庫重命名

// 跨數(shù)據(jù)庫重命名
db.adminCommand({
renameCollection: "dev.users",
to: "prod.customers"
})
// 強制覆蓋目標集合
db.adminCommand({
renameCollection: "dev.logs",
to: "prod.app_logs",
dropTarget: true
})
5. 重命名操作特性
5.1 保留的集合屬性
| 屬性 | 是否保留 | 備注 |
|---|---|---|
| 文檔數(shù)據(jù) | 是 | 全部遷移 |
| 索引 | 是 | 包括自定義索引 |
| 分片配置 | 否 | 需重新配置 |
| 視圖依賴 | 否 | 需手動更新 |
| 驗證規(guī)則 | 是 | 保持原樣 |
5.2 性能影響對比
| 操作類型 | 鎖級別 | 資源消耗 | 耗時 |
|---|---|---|---|
| 同DB重命名 | 全局寫鎖 | 低 | 快 |
| 跨DB重命名 | 全局寫鎖 | 高(數(shù)據(jù)復制) | 慢 |
6. 權(quán)限與安全配置
6.1 所需權(quán)限矩陣
| 操作 | 源DB權(quán)限 | 目標DB權(quán)限 |
|---|---|---|
| 同DB重命名 | renameCollection | - |
| 跨DB重命名 | readWrite | dbAdmin |
6.2 創(chuàng)建專用角色
use admin
db.createRole({
role: "collectionAdmin",
privileges: [
{
resource: { db: "", collection: "" },
actions: ["renameCollection"]
}
],
roles: []
})
7. 高級應(yīng)用場景
7.1 臨時集合處理
// 創(chuàng)建臨時集合
db.temp_data.insertMany([...])
// 重命名并保留臨時狀態(tài)(4.4+)
db.adminCommand({
renameCollection: "test.temp_data",
to: "test.final_data",
stayTemp: true
})
7.2 大規(guī)模集合重命名策略

8. 故障排查與恢復
8.1 常見錯誤代碼
| 錯誤代碼 | 原因 | 解決方案 |
|---|---|---|
| 26 | 命名空間不存在 | 檢查源集合名 |
| 48 | 目標已存在 | 使用dropTarget或先刪除 |
| 73 | 無效名稱 | 檢查命名規(guī)范 |
| 13 | 權(quán)限不足 | 提升用戶權(quán)限 |
8.2 操作回滾方案
// 1. 檢查oplog獲取操作時間點
use local
db.oplog.rs.find({op: "c", ns: "admin.$cmd"}).sort({$natural: -1}).limit(1)
// 2. 執(zhí)行反向重命名
db.adminCommand({
renameCollection: "test.new_name",
to: "test.original_name",
dropTarget: true
})
9. 最佳實踐建議
生產(chǎn)環(huán)境操作清單:
- 業(yè)務(wù)低峰期執(zhí)行
- 提前備份數(shù)據(jù)
- 通知相關(guān)團隊
- 準備回滾方案
命名規(guī)范建議:
// 好的命名
db.adminCommand({renameCollection: "analytics.user_logs", to: "analytics.user_events"})
// 不好的命名
db.adminCommand({renameCollection: "db1.col1", to: "db2.1234"})
監(jiān)控指標:
# 監(jiān)控集合重命名操作 mongotop -n 10 mongostat --discover -n 5
10. 替代方案比較
| 方案 | 優(yōu)點 | 缺點 | 適用場景 |
|---|---|---|---|
| renameCollection | 原子操作,保留索引 | 需要停機 | 中小集合 |
| mongodump+mongorestore | 可選擇性遷移 | 耗時較長 | 超大集合 |
| 應(yīng)用層雙寫 | 無需停機 | 實現(xiàn)復雜 | 關(guān)鍵業(yè)務(wù)集合 |
通過本文的全面介紹,您應(yīng)該已經(jīng)掌握了MongoDB集合重命名的所有關(guān)鍵知識和實踐技巧。請記住在生產(chǎn)環(huán)境執(zhí)行重命名操作前,務(wù)必進行充分測試并制定完善的回滾方案。
以上就是MongoDB集合重命名完全指南:從基礎(chǔ)到高級實踐的詳細內(nèi)容,更多關(guān)于MongoDB集合重命名的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
MongoDB 3.4 安裝以 Windows 服務(wù)方式運行的詳細步驟
這篇文章主要介紹了MongoDB 3.4 安裝以 Windows 服務(wù)方式運行的詳細步驟,需要的朋友可以參考下2017-09-09
Mongodb 崩潰報錯 Too many open files的問題解析
這篇文章主要介紹了Mongodb 崩潰報錯 Too many open files的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12
express使用Mongoose連接MongoDB操作示例【附源碼下載】
這篇文章主要介紹了express使用Mongoose連接MongoDB操作,結(jié)合實例形式分析了express使用Mongoose連接MongoDB的具體步驟與相關(guān)實現(xiàn)技巧,并附帶源碼供讀者下載參考,需要的朋友可以參考下2019-07-07
MongoDB快速入門筆記(三)之MongoDB插入文檔操作
這篇文章主要介紹了MongoDB快速入門筆記(三)之MongoDB插入文檔操作 的相關(guān)資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下2016-06-06

