如何使用MongoMapper在Ruby中重命名一个数据库?
如何使用MongoMapper在Ruby中重命名一个数据库?
我尝试在Ruby中使用MongoMapper重命名数据库。
有没有可能做到这一点?
有没有其他的hack方法来完成同样的任务?
admin 更改状态以发布 2023年5月23日
正如上述其他问题所提到的,MongoDB实际上没有重命名数据库的能力。但是,您可以复制然后删除,但请注意这将导致索引重建。您不会想在大型数据集上执行此操作。
mongo-ruby-driver(以及大多数10gen驱动程序)具有通过对任何DB对象实例上的DB#command方法调用执行任何MongoDB命令的能力。
在Ruby驱动程序中,您可以执行以下操作:
require 'mongo' client = Mongo::MongoClient.new db = client.db('admin') db.command({:copydb => 1, :fromdb => oldname, :todb => newname}) client.drop_database(oldname)
更新:在MongoDB的更新版本中,有一个JS shell助手用于db.rename(),其功能与上面的ruby代码完全相同。
function (newName) { if(newName == this.getName() || newName.length === 0) return; this.copyDatabase(this.getName(), newName, "localhost"); this.dropDatabase(); db = this.getSiblingDB(newName); }
除此之外,还有以下功能请求票据,可使db.rename()成为一流命令。请随意为此功能投票。