我们应该注意哪些问题或绊脚石?我们在Google上发现了一些过时的文章,并尝试在Mongoid Google网上论坛上发帖(虽然我们被禁止),但是会喜欢过去做过这些的SO成员的想法.
我们在Rails 3.2.12上.
谢谢!
解决方法@H_404_10@
它们都是
Ruby的MongoDB Libraries.但是如果你想切换,这里有一些注意事项:
将MongoMapper ORM迁移到Mongoid ORM – Notes
>配置数据库连接.
>替换配置yaml文件(包括副本配置).
>配置Mongoid特定选项.例如 – raise_not_found_error:false.如果你不想每次查询什么都不返回错误…
>更改所有模型定义 – 包括MongoMapper :: Document以包含Mongoid :: Document
>更改所有字段定义的格式.
>在mongoid中,你应该指定时间戳:包括Mongoid :: Timestamps
>更改验证.例如:in => ARRAY,将:验证:名称,存在:true,包含:{in:ARRAY}
>更改索引.
>按格式更改order_by.例如:MM:Model.all(:order =>’name’). Mongoid:Model.order_by(‘name ASC’)
> Error是Mongoid中的关键字.因此,如果您有一个名为Error的模型,则应更改它.
>分页格式不同,使用另一个宝石.
> MM中的主键索引条目是id.在Mongoid中它是_id,如果您在对象JSON中依赖.id的其他代码,则可以在模型中覆盖as_json函数以创建所需的JSON结构.
>在MM,Model.fields(:id,:name)中,将从数据库返回的字段限制为提供给方法的字段.在Mongoid中它是Model.only(:name,:id)
>一些查询更改:
>按数组选择对象:MM:Model.where(:attr.in => [])和Model.where(:attr => []). Mongoid只有:Model.where(:attr.in => [])> MM的地图选项相当于Mid的选择. Model.map(&:name)–to– Model.pluck(:name)> Mongoid不支持查找nil的查询.例如:value = nil. Model.find(value)将抛出一个错误:“调用Document.find with nil无效”.所以在mongoid中我们应该这样做:Model.find(value ||“”).>在MM中:Model.find_or_initialize_by_name(“BOB”).在Mongoid Model.find_or_initialize_by(名称:“BOB”)中.> MM可用于以下两个选项:Model.where({:name =>’BOB’}).first,以及Model.first({:name =>’BOB’}). Mongoid只有第一选择.>在MM中,更新多个对象:Model.set({conditions},attr_to_update).在Mongoid:Model.where(条件).update_all(attr_to_update).
将MongoMapper ORM迁移到Mongoid ORM – Notes
>配置数据库连接.
>替换配置yaml文件(包括副本配置).
>配置Mongoid特定选项.例如 – raise_not_found_error:false.如果你不想每次查询什么都不返回错误…
>更改所有模型定义 – 包括MongoMapper :: Document以包含Mongoid :: Document
>更改所有字段定义的格式.
>在mongoid中,你应该指定时间戳:包括Mongoid :: Timestamps
>更改验证.例如:in => ARRAY,将:验证:名称,存在:true,包含:{in:ARRAY}
>更改索引.
>按格式更改order_by.例如:MM:Model.all(:order =>’name’). Mongoid:Model.order_by(‘name ASC’)
> Error是Mongoid中的关键字.因此,如果您有一个名为Error的模型,则应更改它.
>分页格式不同,使用另一个宝石.
> MM中的主键索引条目是id.在Mongoid中它是_id,如果您在对象JSON中依赖.id的其他代码,则可以在模型中覆盖as_json函数以创建所需的JSON结构.
>在MM,Model.fields(:id,:name)中,将从数据库返回的字段限制为提供给方法的字段.在Mongoid中它是Model.only(:name,:id)
>一些查询更改:
>按数组选择对象:MM:Model.where(:attr.in => [])和Model.where(:attr => []). Mongoid只有:Model.where(:attr.in => [])> MM的地图选项相当于Mid的选择. Model.map(&:name)–to– Model.pluck(:name)> Mongoid不支持查找nil的查询.例如:value = nil. Model.find(value)将抛出一个错误:“调用Document.find with nil无效”.所以在mongoid中我们应该这样做:Model.find(value ||“”).>在MM中:Model.find_or_initialize_by_name(“BOB”).在Mongoid Model.find_or_initialize_by(名称:“BOB”)中.> MM可用于以下两个选项:Model.where({:name =>’BOB’}).first,以及Model.first({:name =>’BOB’}). Mongoid只有第一选择.>在MM中,更新多个对象:Model.set({conditions},attr_to_update).在Mongoid:Model.where(条件).update_all(attr_to_update).