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