在我的MongoDB数据库名称中有一个错别字,我正在寻找重命名数据库。
我可以像这样复制和删除…
db.copyDatabase('old_name', 'new_name');
use old_name
db.dropDatabase();
是否有重命名数据库的命令?
在我的MongoDB数据库名称中有一个错别字,我正在寻找重命名数据库。
我可以像这样复制和删除…
db.copyDatabase('old_name', 'new_name');
use old_name
db.dropDatabase();
是否有重命名数据库的命令?
当前回答
我试过了。
db.copyDatabase('DB_toBeRenamed','Db_newName','host')
然后才知道它已经被mongo社区弃用了,尽管它创建了备份或重命名了DB。
WARNING: db.copyDatabase is deprecated. See http://dochub.mongodb.org/core/copydb-clone-deprecation
{
"note" : "Support for the copydb command has been deprecated. See
http://dochub.mongodb.org/core/copydb-clone-deprecation",
"ok" : 1
}
所以不相信上面的方法,我不得不采取转储本地使用下面的命令
mongodump --host --db DB_TobeRenamed --out E://FileName/
连接到Db。
use DB_TobeRenamed
然后
db.dropDatabase()
然后使用命令恢复数据库。
mongorestore -host hostName -d Db_NewName E://FileName/
其他回答
我试过了。
db.copyDatabase('DB_toBeRenamed','Db_newName','host')
然后才知道它已经被mongo社区弃用了,尽管它创建了备份或重命名了DB。
WARNING: db.copyDatabase is deprecated. See http://dochub.mongodb.org/core/copydb-clone-deprecation
{
"note" : "Support for the copydb command has been deprecated. See
http://dochub.mongodb.org/core/copydb-clone-deprecation",
"ok" : 1
}
所以不相信上面的方法,我不得不采取转储本地使用下面的命令
mongodump --host --db DB_TobeRenamed --out E://FileName/
连接到Db。
use DB_TobeRenamed
然后
db.dropDatabase()
然后使用命令恢复数据库。
mongorestore -host hostName -d Db_NewName E://FileName/
上面的过程很慢,你可以使用下面的方法,但你需要一个集合一个集合地移动到另一个db。
use admin
db.runCommand({renameCollection: "[db_old_name].[collection_name]", to: "[db_new_name].[collection_name]"})
mongoshdeprecederror: [COMMON-10003] copyDatabase()已被移除,因为它在MongoDB 4.0中已弃用
你可以这样做,如果你使用MongoDB < 4.2 (ref):
db.copyDatabase("db_to_rename","db_renamed","localhost")
use db_to_rename
db.dropDatabase();
编者按:这与问题本身使用的方法相同,但已被证明对其他人有用。
在将所有数据放入管理数据库的情况下(您不应该这样做),您将注意到db.copyDatabase()将不起作用,因为您的用户需要许多特权,而您可能不想给予它。下面是一个手动复制数据库的脚本:
use old_db
db.getCollectionNames().forEach(function(collName) {
db[collName].find().forEach(function(d){
db.getSiblingDB('new_db')[collName].insert(d);
})
});