如何在 ruby​​ 中使用 MongoMapper 重命名数据库?

Posted

技术标签:

【中文标题】如何在 ruby​​ 中使用 MongoMapper 重命名数据库?【英文标题】:How to rename a database using MongoMapper in ruby? 【发布时间】:2013-03-08 21:13:36 【问题描述】:

我正在尝试在 ruby​​ 中使用 MongoMapper 重命名数据库。 是否可以这样做? 任何替代黑客来完成同样的事情?

【问题讨论】:

这应该会有所帮助:***.com/questions/9201832/… 但是有没有办法通过 mongo ruby​​ 驱动程序? 【参考方案1】:

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

mongo-ruby-driver(以及大多数 10gen 驱动程序)能够通过在任何 DB 对象实例上调用 DB#command 方法来执行任何 MongoDB command。

在 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() 成为一流命令的功能请求票。请随时支持此功能。

https://jira.mongodb.org/browse/SERVER-701

【讨论】:

以上是关于如何在 ruby​​ 中使用 MongoMapper 重命名数据库?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio 代码中使用 ruby​​-linter?

Ruby:如何在Ruby块中使用Merge方法

如何在 Sass 中使用 Ruby/Rails 变量?

如何在 ruby​​ 中使用来自 yaml 的登录凭据

如何在一个简单的非 Rails 项目中使用特定的 Ruby 版本

ruby 令人敬畏的ActiveRecord错误报告脚本。如何在Ruby脚本中使用ActiveRecord和SQLite。