1

내 레일 응용 프로그램에서 모델 몽고의 DB를 사용하고, 언제 내가mongomapper의 논리적 "and"쿼리에 문제가 있습니까?

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

을 실행 즉, FIELD1 또는 FIELD2, 잘난 쿼리를

#<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)>> 

수행 OR 연산을 생산하고 올바른 결과를 가져옵니다 사실하지만

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 예외가 발생, AND 연산을 수행하지 않습니다 : $ 표현이어야 비어 있지 않은 배열을

세부

레일즈 버전 : 3.1, Mongo 버전 : 2.0.0, mongo_mapper 보석 버전 : 0.9.2

답변

1

MongoMapper를 업그레이드해야합니다. $and 지원이 plucky 0.4.x에 추가되었습니다. 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