你如何重命名一个MongoDB数据库?
我的MongoDB数据库名称中存在拼写错误,我正在重新命名数据库。
我可以像这样复制和删除...
db.copyDatabase('old_name', 'new_name');
use old_name
db.dropDatabase();
有没有命令来重命名数据库?
不,没有。 请参阅https://jira.mongodb.org/browse/SERVER-701
不幸的是,由于数据库元数据存储在原始(默认)存储引擎中的方式,这不是我们实现的简单功能。 在MMAPv1文件中,描述每个集合和索引的命名空间(例如:dbName.collection)包含数据库名称,因此要重命名一组数据库文件,每个命名空间字符串都必须重写。 这会影响:
这只是为了在独立的 mongod实例中完成对单个数据库的重命名。 对于副本集,需要在每个副本节点上完成上述操作,而且在每个节点上,每个引用此数据库的oplog条目必须以某种方式失效或重写,然后如果它是分片集群,则还需要添加这些如果数据库已分片,则更改为每个分片,并且配置服务器将使用名称空间中的全名创建所有分片元数据。
在现场系统上绝对没有办法做到这一点。
要离线执行此操作,需要重新编写每个数据库文件以容纳新名称,并且在那一点上它将比当前的“copydb”命令慢......
你可以这样做:
db.copyDatabase("db_to_rename","db_renamed","localhost")
use db_to_rename
db.dropDatabase();
编辑注意:这与问题本身使用的方法相同,但已证明对其他人有用。
替代解决方案:您可以转储您的数据库并以不同的名称恢复它。 正如我所经历的,它比db.copyDatabase()
快得多。
$ mongodump -d old_db_name -o mongodump/
$ mongorestore -d new_db_name mongodump/old_db_name
http://docs.mongodb.org/manual/tutorial/backup-with-mongodump/
链接地址: http://www.djcxy.com/p/86375.html上一篇: How do you rename a MongoDB database?
下一篇: Can I use MongoDB as a replacement for CoreData on iOS?