Вопрос относительно объединения нескольких критериев any_of #Mongoid

У меня есть требование, когда мне нужно выполнить запрос MongoDB, например следующее:

db.collection.find({ $or : [{"field1" : "value1"}, {"field2" : "value2"}], 
$or : [{"field3" : "value3"}, {"field4" : "value4"}]}) 

т.е.

(field1 == value 1 or field2 == value2) and (field3 == value3 or field4 
== value4) 

Я хочу добиться этого с помощью цепочки критериев, ставших так как запрос формируется динамически из разных частей кода. Но если я попытаюсь сделать что-то вроде следующего

criteria = Collection.any_of({"field1" => "value1"}, {"field2" => 
"value2"})
criteria = criteria.any_of({"field3" => "value3"}, {"field4" => "value4"}) 

, я получу результирующий запрос, в котором все они объединены в один оператор $ или , например

db.collection.find({ $or : [{"field1" : "value1"}, {"field2" : "value2"}, 
{"field3" : "value3"}, {"field4" : "value4"}]}) 

Каков способ достижения "и" из двух any_of "с использованием цепочки критериев?

13
задан Rakeesh 19 January 2011 в 09:49
поделиться