7

我有一个名为艺术家的收藏,我想将其重命名为 Artist_lookups。我该怎么做呢?

4

4 回答 4

6

使用 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"
)
于 2016-05-11T16:16:07.457 回答
4

很简单,在 mongo shell 中,这样做:

db.artists.renameCollection("artist_lookups");

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

db.artists.renameCollection("artist_lookups", true);

你可以得到一些例外。

  • 10026 – 如果源命名空间不存在则引发。
  • 10027 – 如果目标命名空间存在并且 dropTarget 为 false 或未指定,则引发。
  • 15967 – 如果目标命名空间是无效的集合名称,则引发。
于 2012-11-27T04:26:20.050 回答
4

来自Mongoid 文档

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

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

如果你想保留artists集合中的现有数据,并重命名它,我建议暂时关闭你的应用程序,将集合重命名为artist_lookupsMongoDB 服务器上,然后重新启动应用程序。

于 2012-08-22T20:38:09.527 回答
2
db.artists.renameCollection("artist_lookups")

肯定会工作。

于 2014-10-04T09:50:11.460 回答