当前位置: 代码网 > it编程>数据库>mongodb > MongoDB集合重命名的完整指南

MongoDB集合重命名的完整指南

2025年11月21日 mongodb 我要评论
1. 集合重命名架构总览2. renamecollection命令详解2.1 命令语法结构db.admincommand({ renamecollection: "<source_db>

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集合重命名的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com