mongomapper 被 mongoid 替换并且更新 mongo 驱动程序后,集合无法正确读取
Collections not being read correctly after mongomapper is replaced by mongoid and mongo driver is updated
MongoDB V3.2
升级了以下宝石:
Ruby Mongo 驱动程序从 1.11.1 到 2.10.4 + 依赖项
将 MongoMapper 0.13.1 替换为 Mongoid 5.4.1 + dependencies
进行这些更改后,我立即注意到任何放置在附加模块 (FolderModuleName::ClassName) 中的可以在 MongoMapper 中显示数据的集合将不再显示任何数据。
唯一会显示数据的集合是那些没有任何模块的集合,例如 class 看起来像这样 class 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
根据这些信息,我将以下代码添加到受影响的 ruby 个模型中:
store_in collection: 'module_name.collection_name'
这解决了我的问题。
不使用上面的代码就可以读取没有模块的集合的原因是集合名称简单地存储为:
collection_name
在那种情况下添加 'store in' 只是多余的。
MongoDB V3.2
升级了以下宝石:
Ruby Mongo 驱动程序从 1.11.1 到 2.10.4 + 依赖项 将 MongoMapper 0.13.1 替换为 Mongoid 5.4.1 + dependencies
进行这些更改后,我立即注意到任何放置在附加模块 (FolderModuleName::ClassName) 中的可以在 MongoMapper 中显示数据的集合将不再显示任何数据。
唯一会显示数据的集合是那些没有任何模块的集合,例如 class 看起来像这样 class 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
根据这些信息,我将以下代码添加到受影响的 ruby 个模型中:
store_in collection: 'module_name.collection_name'
这解决了我的问题。
不使用上面的代码就可以读取没有模块的集合的原因是集合名称简单地存储为:
collection_name
在那种情况下添加 'store in' 只是多余的。