MongoDB管理:如何重命名数据库

最近收到一个AliCloudDB for MongoDB的使用咨询问题,和大家分享一下,用户想对database进行重命名操作,但因为MongoDB并没有提供renameDatabase的命令,用户的想法是通过copydb来实现,先将数据库拷贝一份,然后删除老的数据库,但由于DB里数据很多,copydb太耗时,想知道是否有更好的方法?

虽然MongoDB没有renameDatabase的命令,但提供了renameCollection的命令,这个命令并不是仅仅能修改collection的名字,同时也可以修改database。

 db.adminCommand({renameCollection: "db1.test1", to: "db2.test2"})

上述命令实现了将db1下的test1,重命名为db2下的test2,这个命令只修改元数据,开销很小,有了这个功能,要实现db1重命名为db2,只需要遍历db1下所有的集合,重命名到db2下,就实现了renameDatabase的功能,写个js脚本能很快的实现这个功能.

var source = "source";
var dest = "dest";
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});
}
时间: 2024-10-28 12:29:02

MongoDB管理:如何重命名数据库的相关文章

重命名数据库时,出现“无法用排他锁锁定该数据库,以执行该操作”

   今天在用T-SQL语句重命名数据库时, Exec sp_renamedb'text',text1' go 始终出现"无法用排他锁锁定该数据库,以执行该操作"这个提示,? 这时,我们要确保没有任何用户正在使用数据库,然后将数据库设置为单用户模式. 右击"text"数据库,选择"属性"   在选项,限制访问里,改为SINGEL_USER,确定之后,再执行T-SQL语句.          

mysql中如何重命名数据库(表名)命令

五个改mysql数据库名的方法:  代码如下 复制代码 1. RENAME DATABASE db_name TO new_db_name 这个..这个语法在mysql 5.1.7中被添加进来,到了5.1.23又去掉了. 据说有可能丢失数据.还是不要用的好. 很简单,RENAME一下就好了.语法:  代码如下 复制代码 RENAME DATABASE db_name TO new_db_name; # or RENAME SCHEMA db_name TO new_db_name; 这次一边做网

SQL Server 2000中重命名数据库

执行下面三行SQL语句: EXEC sp_dboption 'OldDbName', 'Single User', 'TRUE' EXEC sp_renamedb 'OldDbName', 'NewDbName' EXEC sp_dboption 'NewDbName', 'Single User', 'FALSE'

SQL Server数据库重命名、数据导出的方法说明_MsSql

第一个问题是重命名数据库问题:在企业管理器中是无法直接对数据库重命名的,只能在查询分析器中操作 复制代码 代码如下: create proc killspid (@dbname varchar(20))         as         begin         declare     @sql     nvarchar(500),@temp   varchar(1000)     declare     @spid     int         set     @sql='declar

mssql server数据库重命名方法

mssql server数据库重命名方法 create proc killspid (@dbname varchar(20))         as         begin         declare     @sql     nvarchar(500),@temp   varchar(1000)     declare     @spid     int         set     @sql='declare     getspid     cursor     for      

mssql 数据库重命名及错误分析

mssql 数据库重命名及错误分析 1. 查看数据库的版本        select @@version    常见的几种SQL SERVER打补丁后的版本号:    8.00.194   Microsoft SQL Server 2000     8.00.384   Microsoft SQL Server 2000 SP1     8.00.532   Microsoft SQL Server 2000 SP2     8.00.760   Microsoft SQL Server 20

SQL Server数据库重命名、数据导出的方法说明

第一个问题是重命名数据库问题:在企业管理器中是无法直接对数据库重命名的,只能在查询分析器中操作 复制代码 代码如下:create proc killspid (@dbname varchar(20))         as         begin         declare     @sql     nvarchar(500),@temp   varchar(1000)     declare     @spid     int         set     @sql='declare

ASP技巧:在Access数据库中重命名表

access|技巧|数据|数据库 下面代码是用Adox重命名Access表名的示例代码:Dim Conn,ConnStr,oCat,oTblConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("data.mdb")Set oCat=Server.CreateObject("ADOX.Catalog") oCat.ActiveConnectio

重命名mysql数据库的五个方法

  五个改mysql数据库名的方法: 1. RENAME DATABASE db_name TO new_db_name 这个..这个语法在mysql 5.1.7中被添加进来,到了5.1.23又去掉了.据说有可能丢失数据.还是不要用的好.详见: http://dev.mysql.com/doc/refman/5.1/en/rename-database.html 2.如果所有表都是MyISAM类型的话,可以改文件夹的名字 关闭mysqld 把data目录中的db_name目录重命名为new_db