我在我的rails应用程序中使用mongo db作为模型,当我执行
时Model.where(:$or => [{:field1 => true}, {:field2 => true}])
产生丰富的查询
#<Plucky::Query $or: [{:field1=>true}, {:field2=>true}], transformer: #<Proc:0xa4b1c5c@/home/x/.rvm/gems/ruby-1.9.2-p290@app/gems/mongo_mapper-0.9.2/lib/mongo_mapper/plugins/querying.rb:79 (lambda)>>
执行OR运算并获取正确的结果,即field1或field2为true但
Model.where(:$and => [{:field1 => true}, {:field2 => true}])
产生丰富的查询
#<Plucky::Query $and: {"$in"=>[{:field1=>true}, {:field2=>true}]}, transformer: #<Proc:0xa435120@/home/x/.rvm/gems/ruby-1.9.2-p290@app/gems/mongo_mapper-0.9.2/lib/mongo_mapper/plugins/querying.rb:79 (lambda)>>
不执行AND操作,而是抛出错误
Mongo :: OperationFailure异常:$和expression必须是非空的 阵列
详情
Rails版本:3.1, Mongo版本:2.0.0, mongo_mapper gem版本:0.9.2
答案 0 :(得分:1)
您需要升级MongoMapper。在plucky 0.4.x中添加了$and
支持,MongoMapper从版本0.10.1开始使用。
This commit添加$and
支持勇敢,是04.2及更高版本的一部分。
This commit更新了MongoMapper以使用plucky 0.4.x并且是MM 0.10.1及更高版本的一部分。