问题描述
MongoDB V3.2
升级了以下宝石:
Ruby Mongo驱动程序从1.11.1到2.10.4 +依赖关系 用Mongoid 5.4.1 +依赖关系替换了MongoMapper 0.13.1
这些更改之后,我立即注意到,可以在MongoMapper中显示数据的附加模块(FolderModuleName :: ClassName)中放置的任何集合将不再显示任何数据。
唯一可以显示数据的集合是没有任何模块的集合,例如看起来像此类DataClass的类。
解决方法
我可以通过使用Rails控制台并使用ruby mongo驱动程序连接到我的数据库来解决问题。 (https://docs.mongodb.com/ruby-driver/master/quick-start/)
client = Mongo::Client.new([ '127.0.0.1:27017' ],:database => 'dbname')
db = client.database
db.collections # returns a list of collection objects
db.collection_names # returns a list of collection names
在rails控制台中使用db.collection_names,我可以看到带有模块的任何集合都被保存为这样:
module_name.collection_name
升级后,我只能读取带有模块的集合名称:
module_name_collection_name
有了这些信息,我将以下代码添加到了受影响的红宝石模型中:
store_in collection: 'module_name.collection_name'
这解决了我的问题。
不使用上面的代码就可以读取不带模块的集合的原因是,集合名称只是存储为:
collection_name
在这种情况下,添加“存储在”将是多余的。