微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用mongomapper替换mongomapper和更新mongo驱动程序后无法正确读取集合

如何解决用mongomapper替换mongomapper和更新mongo驱动程序后无法正确读取集合

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

在这种情况下,添加“存储在”将是多余的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。