如何在 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?
如何在一个简单的非 Rails 项目中使用特定的 Ruby 版本
ruby 令人敬畏的ActiveRecord错误报告脚本。如何在Ruby脚本中使用ActiveRecord和SQLite。