Проблема с логическим "и" запросом в mongomapper? - PullRequest
1 голос
/ 30 декабря 2011

Я использую mongo db для модели в моем приложении rails, и когда я выполняю

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

выполняет операцию ИЛИ и выбирает правильные результаты, т. Е. Поле1 или поле2 имеют значение 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 Exception: $ и выражение должны быть непустыми массив

ОПИСАНИЕ

Rails версия: 3.1, Монго версия: 2.0.0, версия драгоценного камня mongo_mapper: 0.9.2

1 Ответ

1 голос
/ 30 декабря 2011

Вам нужно будет обновить MongoMapper. $and добавлена ​​поддержка в plucky 0.4.x, которую MongoMapper использует с версии 0.10.1.

Эта фиксация добавлена ​​поддержка $and для plucky и является частью plucky 0.4.2 и выше.

Этот коммит обновил MongoMapper для использования plucky 0.4.x и является частью MM 0.10.1 и выше.

...