1

我使用蒙戈DB在我的Rails应用程序的模型,当我执行在mongomapper中存在逻辑“和”查询的问题?

Model.where(:$or => [{:field1 => true}, {:field2 => true}]) 

产生勇敢查询

#<Plucky::Query $or: [{:field1=>true}, {:field2=>true}], transformer: #<Proc:[email protected]/home/x/.rvm/gems/[email protected]/gems/mongo_mapper-0.9.2/lib/mongo_mapper/plugins/querying.rb:79 (lambda)>> 

执行或操作并获取正确的结果,即场1或场是事实,但

Model.where(:$and => [{:field1 => true}, {:field2 => true}]) 

产生勇敢查询

#<Plucky::Query $and: {"$in"=>[{:field1=>true}, {:field2=>true}]}, transformer: #<Proc:[email protected]/home/x/.rvm/gems/[email protected]/gems/mongo_mapper-0.9.2/lib/mongo_mapper/plugins/querying.rb:79 (lambda)>> 

不执行与操作,而不是将其抛出错误

蒙戈:: OperationFailure例外:$和表达式必须是一个非空 阵列

详情

Rails版本:3.1, Mongo版本:2.0.0, mongo_mapper宝石版本:0.9.2

回答

1

您将需要升级MongoMapper。在plucky 0.4.x中添加了$and支持,这是MongoMapper从0.10.1版开始使用的。

This commit加入$and支持plucky并且是plucky 0.4.2和更高版本的一部分。

This commit更新的MongoMapper使用plucky 0.4.x并且是MM 0.10.1和更高版本的一部分。

+0

甜!谢谢.. – n00b 2011-12-30 15:59:56