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