У меня есть требование, когда мне нужно выполнить запрос 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 "с использованием цепочки критериев?