Estoy teniendo problemas con esta consulta MongoDB utilizando sintaxis de matriz PHP. Esta es una versión directa de la consulta que quiero usar.
db.collection.find({
$or: [
{$and : [{X:1}, {X: {$gt: 100}}]},
{$and : [{X:2}, {X: {$lt: 100}}]}
]
});
Nota: La consulta real es más complicado, esto es sólo un ejemplo.
No pude encontrar algunos ejemplos que describan este tipo de consulta en PHP. La mejor que he llegado era la siguiente:
$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);
Sin embargo, esta consulta no devuelve ningún resultado. Obviamente no podemos eliminar $and
de la matriz porque no podemos tener claves duplicadas en la matriz de PHP.
No quiero usar expresiones de JavaScript porque la velocidad es crítica.
ACTUALIZACIÓN: como Alexander Azarov señaló en los comentarios, mi consulta original se puede escribir de manera diferente. He actualizado la pregunta con la consulta $and
correctamente utilizada.
¿Qué exactamente no funciona? ¿Tienes mensajes de error? –
La consulta se ejecuta correctamente pero devuelve 0 resultados. –
¿Podría publicar un volcado de datos de muestra? –