MongoDB Plusieurs opérateurs $and Demande B. PHP

J'ai des problèmes avec cette demande MongoDB, Utilisation de la syntaxe du tableau PHP. Ceci est une version directe de la demande que je veux utiliser.


db.collection.find/{
$or: [
{$and : [{X:1}, {X: {$gt: 100}}]},
{$and : [{X:2}, {X: {$lt: 100}}]}
]
}/;


Remarque: une vraie demande est plus difficile, c'est juste un exemple.

Je ne pouvais pas trouver quelques exemples décrivant ce type de demande dans PHP.
Le mieux que j'ai créé, c'était ceci:


$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/;


Mais cette requête ne renvoie aucun résultat.
Évidemment, nous ne pouvons pas supprimer
$and

du massif, car nous ne pouvons pas avoir des touches en double dans le tableau PHP.

Je ne veux pas utiliser des expressions JavaScript, Parce que la vitesse est très importante.

UPDATE: Comme Alexander Azarov a noté dans les commentaires, ma demande initiale peut être écrite différemment. J'ai mis à jour la question à l'aide de la requête correctement utilisée
$and

.
Invité:

Christine

Confirmation de:

Voici un exemple de code avec les opérateurs

or

et

and

dans PHP Pour demande Mongo.

Il utilise des noms différents des champs à partir de ce que vous allez trouver dans votre demande, mais de comprendre comment utiliser c'est très simple.

En ce moment, je n'ai pas le temps de le changer pour répondre à votre demande, mais si vous avez des problèmes avec cela, faites-le-moi savoir et je vais le réparer. Cette demande fonctionne et trouve ce qu'il devrait trouver.


$arrFind = array/
'$or' => array/
array/
'$and' => array/
array/
UI_name => array/
'$regex' => 'andrew',
'$options' => 'i'
/
/,
array/
UI_surname => array/
'$regex' => 'mik',
'$options' => 'i'
/
/
/
/,
array/
'$and' => array/
array/
UI_surname => array/
'$regex' => 'andrew',
'$options' => 'i'
/
/,
array/
UI_name => array/
'$regex' => 'mik',
'$options' => 'i'
/
/
/
/,
/
/;

Pour répondre aux questions, connectez-vous ou registre