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集合重命名的资料请关注脚本之家其它相关文章!

相关文章

  • MongoDB入门教程之索引操作浅析

    MongoDB入门教程之索引操作浅析

    这篇文章主要介绍了MongoDB入门教程之索引操作浅析,本文讲解了建立索引、唯一索引、组合索引、删除索引等内容,需要的朋友可以参考下
    2014-08-08
  • 使用mongodb实现简单的读写操作

    使用mongodb实现简单的读写操作

    这篇文章主要给大家介绍了如何使用mongodb实现简单的读写操作,本文适合初学者,特别是刚刚安装了mongodb数据库的朋友,或在atlas刚拿到免费集群的朋友,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2023-12-12
  • MongoDB数据库常用的10条操作命令

    MongoDB数据库常用的10条操作命令

    MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。本文简单的介绍一些MongoDB数据库常用的操作命令
    2021-06-06
  • MongoDB 3.4 安装以 Windows 服务方式运行的详细步骤

    MongoDB 3.4 安装以 Windows 服务方式运行的详细步骤

    这篇文章主要介绍了MongoDB 3.4 安装以 Windows 服务方式运行的详细步骤,需要的朋友可以参考下
    2017-09-09
  • MongoDB特定类型的查询语句实例

    MongoDB特定类型的查询语句实例

    在关系型数据库中,可以实现基于表的各种各样的查询,下面这篇文章主要给大家介绍了关于MongoDB特定类型查询的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • Mongodb 崩溃报错 Too many open files的问题解析

    Mongodb 崩溃报错 Too many open files的问题解析

    这篇文章主要介绍了Mongodb 崩溃报错 Too many open files的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • MongoDB与MySQL的操作对比表及区别介绍

    MongoDB与MySQL的操作对比表及区别介绍

    这篇文章主要介绍了MongoDB与MySQL的操作对比表及区别介绍,本文着重讲解了Mongodb与Mysql的操作命令的对比,需要的朋友可以参考下
    2015-05-05
  • express使用Mongoose连接MongoDB操作示例【附源码下载】

    express使用Mongoose连接MongoDB操作示例【附源码下载】

    这篇文章主要介绍了express使用Mongoose连接MongoDB操作,结合实例形式分析了express使用Mongoose连接MongoDB的具体步骤与相关实现技巧,并附带源码供读者下载参考,需要的朋友可以参考下
    2019-07-07
  • MongoDB快速入门笔记(三)之MongoDB插入文档操作

    MongoDB快速入门笔记(三)之MongoDB插入文档操作

    这篇文章主要介绍了MongoDB快速入门笔记(三)之MongoDB插入文档操作 的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • 浅析MongoDB之安全认证

    浅析MongoDB之安全认证

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

最新评论