轻便摩托车:重命名mongodb系列

时间:2012-10-10 08:25:40

标签: ruby mongodb mongoid3 moped

如何使用Mongoid + Moped驱动程序重命名集合?

是否有http://docs.mongodb.org/manual/reference/command/renameCollection/的Moped实施?

3 个答案:

答案 0 :(得分:0)

重命名集合是一项严重的更改,无法在分片环境中使用。

但是,您可以使用(可能)admin db和db命令通过应用程序执行此操作。所以我可能会考虑一下:the Moped Driver Docs

答案 1 :(得分:0)

可以通过Moped::Collection#rename方法重命名集合。

这是一个例子,将“foo”集合重命名为“bar”:

Mongoid::default_session[:foo].rename("bar")

在引擎盖下,命令的构造如下:

session.
  with(database: "admin", read: :primary).
  command(renameCollection: "#{database.name}.#{name}", to: "#{database.name}.#{to_name}")

答案 2 :(得分:0)

我刚刚迁移到Mongoid 7.x并且会话不再存在(它现在是客户端)

API似乎删除了.rename(),所以你可以使用它:

client = Mongo::Database.new(Mongoid.default_client, Mongo::Database::ADMIN, Mongoid.default_client.database.options)
client.command(renameCollection: "#{source_db}.#{source_collection}", 
    to: "#{target_db}.#{target_collection}", dropTarget: true)