如何在Mongoid中重命名mongo集合?

时间:2012-08-22 20:23:49

标签: mongoid mongoid3

我有一个名为艺术家的系列,我想将它重命名为artist_lookups。我该怎么做?

4 个答案:

答案 0 :(得分:4)

来自Mongoid Docs

class Band
  include Mongoid::Document
  store_in collection: "artists", database: "music", session: "secondary"
end

在模型中使用store_in collection: "artist_lookups"。这样,您就可以将Artist模型存储在artist_lookups集合中。

如果要保留artists集合中的现有数据并重命名,我建议暂时关闭您的应用,将集合重命名为MongoDB服务器上的artist_lookups,然后重新启动应用

答案 1 :(得分:4)

使用mongoid5 / mongo ruby​​驱动程序2:

# if you need to check whether foo exists
return unless Mongoid.default_client.collections.map(&:name).include?('foo')

# rename to bar
Mongoid.default_client.use(:admin).command(
  renameCollection: "#{Mongoid.default_client.database.name}.foo",
  to: "#{Mongoid.default_client.database.name}.bar"
)

答案 2 :(得分:2)

非常简单,在mongo shell中,这样做:

  

db.artists.renameCollection(“artist_lookups”);

如果您想删除artist_lookups(如果存在):

  

db.artists.renameCollection(“artist_lookups”,true);

你可以得到一些例外。

  • 10026 - 如果源名称空间不存在则引发。
  • 10027 - 如果目标命名空间存在且dropTarget为false或未指定,则引发。
  • 15967 - 如果目标名称空间是无效的集合名称,则引发。

答案 3 :(得分:1)

db.artists.renameCollection("artist_lookups")

肯定会有用。