麻烦与mongomapper中的逻辑“和”查询?

时间:2011-12-30 14:19:35

标签: ruby-on-rails ruby-on-rails-3 mongodb ruby-on-rails-3.1 mongomapper

我在我的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

1 个答案:

答案 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及更高版本的一部分。