MongoDB集合重命名的完整指南

 更新时间:2025年11月21日 10:11:14   作者:Seal^_^  
本文全面介绍了MongoDB集合重命名操作,包含以下核心内容: 两种重命名方式:同数据库(仅更新元数据)和跨数据库(实际数据迁移) 详细命令语法和参数,需要的朋友可以参考下

1. 集合重命名架构总览

2. renameCollection命令详解

2.1 命令语法结构

db.adminCommand({
  renameCollection: "<source_db>.<source_collection>",
  to: "<target_db>.<target_collection>",
  dropTarget: <boolean>,  // 可选
  stayTemp: <boolean>     // 可选(4.4+)
})

2.2 参数说明表格

参数类型必填描述默认值
renameCollectionstring源集合完全限定名-
tostring目标集合完全限定名-
dropTargetboolean是否覆盖目标集合false
stayTempboolean是否保留临时状态false

3. 重命名操作流程图

4. 不同场景下的重命名操作

4.1 同数据库重命名

// 基本语法
db.adminCommand({
  renameCollection: "test.products_old",
  to: "test.products_new"
})

// 验证结果
use test
show collections

例子:

db.adminCommand({
  renameCollection: "mytest_db.products",
  to: "mytest_db.products_new"
})

// 验证结果
show collections

4.2 跨数据库重命名

// 跨数据库重命名
db.adminCommand({
  renameCollection: "dev.users",
  to: "prod.customers"
})

// 强制覆盖目标集合
db.adminCommand({
  renameCollection: "dev.logs",
  to: "prod.app_logs",
  dropTarget: true
})

5. 重命名操作特性

5.1 保留的集合属性

属性是否保留备注
文档数据全部迁移
索引包括自定义索引
分片配置需重新配置
视图依赖需手动更新
验证规则保持原样

5.2 性能影响对比

操作类型锁级别资源消耗耗时
同DB重命名全局写锁
跨DB重命名全局写锁高(数据复制)

6. 权限与安全配置

6.1 所需权限矩阵

操作源DB权限目标DB权限
同DB重命名renameCollection-
跨DB重命名readWritedbAdmin

6.2 创建专用角色

use admin
db.createRole({
  role: "collectionAdmin",
  privileges: [
    {
      resource: { db: "", collection: "" },
      actions: ["renameCollection"]
    }
  ],
  roles: []
})

7. 高级应用场景

7.1 临时集合处理

// 创建临时集合
db.temp_data.insertMany([...])

// 重命名并保留临时状态(4.4+)
db.adminCommand({
  renameCollection: "test.temp_data",
  to: "test.final_data",
  stayTemp: true
})

7.2 大规模集合重命名策略

8. 故障排查与恢复

8.1 常见错误代码

错误代码原因解决方案
26命名空间不存在检查源集合名
48目标已存在使用dropTarget或先删除
73无效名称检查命名规范
13权限不足提升用户权限

8.2 操作回滚方案

// 1. 检查oplog获取操作时间点
use local
db.oplog.rs.find({op: "c", ns: "admin.$cmd"}).sort({$natural: -1}).limit(1)

// 2. 执行反向重命名
db.adminCommand({
  renameCollection: "test.new_name",
  to: "test.original_name",
  dropTarget: true
})

9. 最佳实践建议

生产环境操作清单

  • 业务低峰期执行
  • 提前备份数据
  • 通知相关团队
  • 准备回滚方案

命名规范建议

// 好的命名
db.adminCommand({renameCollection: "analytics.user_logs", to: "analytics.user_events"})

// 不好的命名
db.adminCommand({renameCollection: "db1.col1", to: "db2.1234"})

监控指标

# 监控集合重命名操作
mongotop -n 10
mongostat --discover -n 5

10. 替代方案比较

方案优点缺点适用场景
renameCollection原子操作,保留索引需要停机中小集合
mongodump+mongorestore可选择性迁移耗时较长超大集合
应用层双写无需停机实现复杂关键业务集合

通过本文的全面介绍,您应该已经掌握了MongoDB集合重命名的所有关键知识和实践技巧。请记住在生产环境执行重命名操作前,务必进行充分测试并制定完善的回滚方案。

以上就是MongoDB集合重命名完全指南:从基础到高级实践的详细内容,更多关于MongoDB集合重命名的资料请关注脚本之家其它相关文章!

相关文章

  • Windows系统下安装MongoDB与Robomongo环境详解

    Windows系统下安装MongoDB与Robomongo环境详解

    这篇文章主要给大家介绍了在Windows系统下安装MongoDB与Robomongo环境的相关资料,文中介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-04-04
  • MongoDB常用命令小结

    MongoDB常用命令小结

    这篇文章主要介绍了MongoDB的一些常用命令,学习与使用MongoDB数据库的朋友可以参考下
    2013-08-08
  • 浅析MongoDB之安全认证

    浅析MongoDB之安全认证

    MongoDB是基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。默认情况下,MongoDB实例启动运行时是没有启用用户访问权限控制的,在实例本机服务器上都可以随意连接到实例进行各种操作,MongoDB不会对连接客户端进行用户验证
    2021-06-06
  • 开发分布式医疗挂号系统MongoDB集成实现上传医院接口

    开发分布式医疗挂号系统MongoDB集成实现上传医院接口

    这篇文章主要介绍了开发分布式医疗挂号系统MongoDB集成实现上传医院接口,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • MongoDB Server 用户名和密码登录的操作步骤

    MongoDB Server 用户名和密码登录的操作步骤

    MongoDB Server默认不进行安全认证,即任何MongoDB Client都可以连接并拥有操作权限,这篇文章主要介绍了MongoDB Server 用户名和密码登录的步骤,需要的朋友可以参考下
    2024-03-03
  • MongoDB高效读写海量数据的方法

    MongoDB高效读写海量数据的方法

    这篇文章介绍了MongoDB高效读写海量数据的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • MongoDB使用小结 一些常用操作分享

    MongoDB使用小结 一些常用操作分享

    本文整理了一年多以来我常用的MongoDB操作,涉及mongo-shell、pymongo,既有运维层面也有应用层面,内容有浅有深,这也就是我从零到熟练的历程,需要的朋友可以参考下
    2017-03-03
  • win7平台快速安装、启动mongodb的方法

    win7平台快速安装、启动mongodb的方法

    这篇文章主要介绍了win7平台快速安装、启动mongodb的方法,结合图文形式分析了win7平台下载、安装、启动、配置MongoDB数据库的方法与注意事项,需要的朋友可以参考下
    2020-05-05
  • mongodb字段值自增长实现代码

    mongodb字段值自增长实现代码

    这篇文章主要介绍了mongodb字段值自增长实现,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • MongoDB分片在部署与维护管理中常见的事项总结大全

    MongoDB分片在部署与维护管理中常见的事项总结大全

    分片(sharding)是指将数据拆分,将其分散存放在不同的机器上的过程。下面这篇文章主要给大家总结介绍了关于MongoDB分片在部署与维护管理中常见事项的相关资料,文中通过图文以及示例代码介绍的非常详细,需要的朋友可以参考下
    2018-09-09

最新评论