Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Moped:重命名mongodb集合_Ruby_Mongodb_Mongoid3_Moped - Fatal编程技术网

Ruby Moped:重命名mongodb集合

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

如何使用Mongoid+Moped driver重命名集合


是否有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控制台类似的方式与它交互。