Ruby Moped:重命名mongodb集合
如何使用Mongoid+Moped driver重命名集合Ruby Moped:重命名mongodb集合,ruby,mongodb,mongoid3,moped,Ruby,Mongodb,Mongoid3,Moped,如何使用Mongoid+Moped driver重命名集合 是否有Moped实现?重命名集合是一个严重的更改,在分片环境中不起作用 但是,您可以通过一个应用程序,使用admin db和db命令来实现这一点。因此,我可能会研究一下:可以通过该方法重命名集合 下面是一个示例,将foo集合重命名为bar: Mongoid::default_session[:foo].rename("bar") 在引擎盖下,命令的构造如下: session. with(database: "admin", rea
是否有Moped实现?重命名集合是一个严重的更改,在分片环境中不起作用
但是,您可以通过一个应用程序,使用admin db和db命令来实现这一点。因此,我可能会研究一下:可以通过该方法重命名集合 下面是一个示例,将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似乎已删除。请重命名,以便您可以使用以下选项:
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)
我会通过复制数据来移动集合,当然更好的办法是,如果集合太大,就不要像在大范围内更改碎片键一样。这实际上没有帮助。链接文档没有提供执行原始mongo命令的方法,比如renameCollectionI没有测试它,但是当您创建会话时,它会说:。。您可以用与mongo控制台类似的方式与它交互。