如何使用Mongoid + Moped驱动程序重命名集合?
有 http://docs.mongodb.org/manual/reference/command/renameCollection/的轻便摩托车实现吗?
重命名集合是一项严重的更改,在分片环境中不起作用。
但是,您可以使用(可能)管理员数据库和数据库命令通过应用程序执行此操作。所以我可能会看看: 轻便摩托车司机文档
可以通过 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}")
我最近刚刚迁移到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)