Ruby on rails 如何在ruby中使用MongoMapper重命名数据库?

Ruby on rails 如何在ruby中使用MongoMapper重命名数据库?,ruby-on-rails,ruby,mongodb,mongomapper,Ruby On Rails,Ruby,Mongodb,Mongomapper,我正在尝试使用ruby中的MongoMapper重命名数据库。 有可能这样做吗? 有没有其他方法可以达到同样的目的?正如上面提到的另一个堆栈溢出问题中提到的,MongoDB实际上没有能力重命名数据库。但是,您可以先复制,然后删除,但请注意这将导致重新生成索引。您不希望对大型数据集执行此操作 mongo ruby驱动程序(以及大多数10gen驱动程序)能够通过在任何DB对象实例上调用该方法来执行任何操作 在Ruby驱动程序中,您将执行以下操作: require 'mongo' client = M

我正在尝试使用ruby中的MongoMapper重命名数据库。 有可能这样做吗?
有没有其他方法可以达到同样的目的?

正如上面提到的另一个堆栈溢出问题中提到的,MongoDB实际上没有能力重命名数据库。但是,您可以先复制,然后删除,但请注意这将导致重新生成索引。您不希望对大型数据集执行此操作

mongo ruby驱动程序(以及大多数10gen驱动程序)能够通过在任何DB对象实例上调用该方法来执行任何操作

在Ruby驱动程序中,您将执行以下操作:

require 'mongo'
client = Mongo::MongoClient.new
db = client.db('admin')

db.command({:copydb => 1, :fromdb => oldname, :todb => newname})
client.drop_database(oldname)
更新:在更新版本的MongoDB中,有一个用于db.rename()的JS shell帮助程序,它与上面的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()成为第一类命令。请随意升级此功能


这应该有帮助:但是有没有办法通过mongo ruby驱动程序?