在 MongoDB 中,我们要修改某一个数据库名,没有直接的方法可以使用,只能先将数据库复制一份为新的数据库名,然后再将原数据库删除即可。
db.copyDatabase('old_name', 'new_name'); use old_name db.dropDatabase();
参数 | 说明 |
---|---|
old_name | 要重命名的原数据库名 |
new_name | 要重命名为的数据库名 |
我们首先,使用 copyDatabase 将原数据库拷贝一份,接着,再删除原数据库就可以实现修改数据库名。
use admin; db.adminCommand({renameCollection: "test.test", to: "test1.test"});
参数 | 说明 |
---|---|
old_name | 要重命名的原数据库名 |
new_name | 要重命名为的数据库名 |
当你把所有的集合移动到了新的库下,就相当于把整个库重命名了。这会比 copyDatabase 快很多。虽然 MongoDB 没有 renameDatabase 的命令,但提供了 renameCollection 的命令,这个命令并不是仅仅能修改 collection 的名字,同时也可以修改 database。
上述命令实现了将 test 下的 test,重命名为 test1 下的 test,这个命令只修改元数据,开销很小,有了这个功能,要实现 test 重命名为 test1,只需要遍历 test 下所有的集合,重命名到 test1 下,就实现了 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});
}
我们首先,使用 mongo 命令,连接上数据库,具体命令如下:
mongo
如下图所示:
现在,我们使用 use 命令,创建一个 haicoder 数据库,具体命令如下:
use haicoder
同时,我们在该数据库下创建一个数据表,具体命令如下:
db.t_test.insert({url:"www.haicoder.net"})
执行完毕后,如下图所示:
现在,我们使用 show 命令,查看所有的数据库,具体命令如下:
show dbs
执行完毕后,如下图所示:
我们看到,此时 haicoder 数据库已经存在了,现在,我们重新拷贝一份数据库,并命名为 haicoder_new,具体命令如下:
db.copyDatabase('haicoder', 'haicoder_new');
执行完毕后,我们再次使用 show 命令,此时,如下图所示:
现在,我们再使用 use 切换到原来的 haicoder 数据库,并直接删除即可,具体命令如下:
use haicoder db.dropDatabase()
现在,我们再次使用 show 命令,查看所有数据库,此时,显示如下:
我们看到,我们删除拷贝删除数据库实现了将数据库 haicoder 重命名为了 haicoder_new。
在 MongoDB 中,我们要修改某一个数据库名,没有直接的方法可以使用,只能先将数据库复制一份为新的数据库名,然后再将原数据库删除即可。