Author:skatexg

Time:2024/09/04

环境说明

mongo版本:4.0

解决方案一

思路:mongo不能直接修改数据名称,可以通过把遍历源库下所有collecton,然后重命名到新库下collection的方式修改数据库名称

具体步骤


1.使用管理员用户登录数据库
# use admin

2.转移数据库的集合到新命名的数据库
# db.runCommand({"renameCollection":"yourdbname.yourcollection", "to":"newdbname.yourcollection"})
 

样例:把数据库data修改为data_20240607 

db.runCommand({"renameCollection":"data.CommentsInfo", "to":"data_20240607.CommentsInfo"});
db.runCommand({"renameCollection":"data.NodeData", "to":"data_20240607.NodeData"});

如果collection数量很多, 可以通过如下脚本实现

var source = "test-db4";
var dest = "test-db6";
var colls = db.getSiblingDB(source).getCollectionNames();
for (var i = 0; i < colls.length; i++) {
    var from = source + "." + colls[i];
    var to = dest + "." + colls[i];
    db.adminCommand({renameCollection: from, to: to});
}



3.发现原数据库里没有任何表, 可以删除源数据库

use yourdbname
db.runCommand( { dropDatabase: 1 } )

说明:collection数据量大时,会影响性能,请在业务低峰执行,

解决方案二

具体步骤

思路:通过导出/导入的是方式实现

适用场景:通过命令行或第三方工具可以连接到数据库

1、通过mongodump 导出源库数据
2、通过mongorestore 恢复数据到新库
3、删除源库

---end---

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐