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

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

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

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

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

8. 故障排查與恢復(fù)
8.1 常見(jiàn)錯(cuò)誤代碼
| 錯(cuò)誤代碼 | 原因 | 解決方案 |
|---|---|---|
| 26 | 命名空間不存在 | 檢查源集合名 |
| 48 | 目標(biāo)已存在 | 使用dropTarget或先刪除 |
| 73 | 無(wú)效名稱 | 檢查命名規(guī)范 |
| 13 | 權(quán)限不足 | 提升用戶權(quán)限 |
8.2 操作回滾方案
// 1. 檢查oplog獲取操作時(shí)間點(diǎn)
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. 最佳實(shí)踐建議
生產(chǎn)環(huán)境操作清單:
- 業(yè)務(wù)低峰期執(zhí)行
- 提前備份數(shù)據(jù)
- 通知相關(guān)團(tuán)隊(duì)
- 準(zhǔn)備回滾方案
命名規(guī)范建議:
// 好的命名
db.adminCommand({renameCollection: "analytics.user_logs", to: "analytics.user_events"})
// 不好的命名
db.adminCommand({renameCollection: "db1.col1", to: "db2.1234"})
監(jiān)控指標(biāo):
# 監(jiān)控集合重命名操作 mongotop -n 10 mongostat --discover -n 5
10. 替代方案比較
| 方案 | 優(yōu)點(diǎn) | 缺點(diǎn) | 適用場(chǎng)景 |
|---|---|---|---|
| renameCollection | 原子操作,保留索引 | 需要停機(jī) | 中小集合 |
| mongodump+mongorestore | 可選擇性遷移 | 耗時(shí)較長(zhǎng) | 超大集合 |
| 應(yīng)用層雙寫 | 無(wú)需停機(jī) | 實(shí)現(xiàn)復(fù)雜 | 關(guān)鍵業(yè)務(wù)集合 |
通過(guò)本文的全面介紹,您應(yīng)該已經(jīng)掌握了MongoDB集合重命名的所有關(guān)鍵知識(shí)和實(shí)踐技巧。請(qǐng)記住在生產(chǎn)環(huán)境執(zhí)行重命名操作前,務(wù)必進(jìn)行充分測(cè)試并制定完善的回滾方案。
以上就是MongoDB集合重命名完全指南:從基礎(chǔ)到高級(jí)實(shí)踐的詳細(xì)內(nèi)容,更多關(guān)于MongoDB集合重命名的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
使用mongodb實(shí)現(xiàn)簡(jiǎn)單的讀寫操作
這篇文章主要給大家介紹了如何使用mongodb實(shí)現(xiàn)簡(jiǎn)單的讀寫操作,本文適合初學(xué)者,特別是剛剛安裝了mongodb數(shù)據(jù)庫(kù)的朋友,或在atlas剛拿到免費(fèi)集群的朋友,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下2023-12-12
MongoDB數(shù)據(jù)庫(kù)常用的10條操作命令
MongoDB 是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。由 C++ 語(yǔ)言編寫。旨在為 WEB 應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。本文簡(jiǎn)單的介紹一些MongoDB數(shù)據(jù)庫(kù)常用的操作命令2021-06-06
MongoDB 3.4 安裝以 Windows 服務(wù)方式運(yùn)行的詳細(xì)步驟
這篇文章主要介紹了MongoDB 3.4 安裝以 Windows 服務(wù)方式運(yùn)行的詳細(xì)步驟,需要的朋友可以參考下2017-09-09
Mongodb 崩潰報(bào)錯(cuò) Too many open files的問(wèn)題解析
這篇文章主要介紹了Mongodb 崩潰報(bào)錯(cuò) Too many open files的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
MongoDB與MySQL的操作對(duì)比表及區(qū)別介紹
這篇文章主要介紹了MongoDB與MySQL的操作對(duì)比表及區(qū)別介紹,本文著重講解了Mongodb與Mysql的操作命令的對(duì)比,需要的朋友可以參考下2015-05-05
express使用Mongoose連接MongoDB操作示例【附源碼下載】
這篇文章主要介紹了express使用Mongoose連接MongoDB操作,結(jié)合實(shí)例形式分析了express使用Mongoose連接MongoDB的具體步驟與相關(guān)實(shí)現(xiàn)技巧,并附帶源碼供讀者下載參考,需要的朋友可以參考下2019-07-07
MongoDB快速入門筆記(三)之MongoDB插入文檔操作
這篇文章主要介紹了MongoDB快速入門筆記(三)之MongoDB插入文檔操作 的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06

