У меня проблемы с этим запросом MongoDB с использованием синтаксиса массива PHP.Это прямая версия запроса, который я хочу использовать.
db.collection.find({
$or: [
{$and : [{X:1}, {X: {$gt: 100}}]},
{$and : [{X:2}, {X: {$lt: 100}}]}
]
});
Примечание. Реальный запрос более сложный, это всего лишь пример.
Iне удалось найти несколько примеров, описывающих этот тип запроса в PHP.Лучшее, что я придумал, было так:
$query = array(
'$or' => array(
array(
'$and' => array(
array('X' => 1),
array('X' => array('gt' => 100))
)
),
array(
'$and' => array(
array('X' => 2),
array('X' => array('lt' => 100))
)
),
)
);
$this->db->collection->find($query);
Но этот запрос не дал результатов.Очевидно, что мы не можем удалить $and
из массива, потому что у нас не может быть дубликатов ключей в массиве PHP.
Я не хочу использовать выражения JavaScript, потому что скорость критична.
ОБНОВЛЕНИЕ: Как отметил Александр Азаров в комментариях, мой оригинальный запрос может быть написан по-другому.Я обновил вопрос с помощью правильно используемого $and
запроса.