MongoDB plusieurs $et les opérateurs de requête en PHP
Je vais avoir du mal avec ce MongoDB requête à l'aide de PHP syntaxe de tableau. Il s'agit d'une version de la requête que je veux utiliser.
db.collection.find({
$or: [
{$and : [{X:1}, {X: {$gt: 100}}]},
{$and : [{X:2}, {X: {$lt: 100}}]}
]
});
Remarque: Le réel de la requête est plus compliqué, c'est juste un exemple.
Je n'étais pas en mesure de trouver quelques exemples décrivant ce type de requête en PHP.
Le meilleur que j'ai trouvé est celle-ci:
$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.
Nous ne pouvons évidemment pas supprimer $and
de la matrice car nous ne pouvons pas avoir des doubles de clés en tableau PHP.
Je ne veux pas utiliser JavaScript expressions parce que la vitesse est critique.
Mise à JOUR: Comme Alexandre Azarov, a souligné dans les commentaires, ma requête peut être écrite différemment. J'ai mis à jour la question avec l'correctement utilisé $and
requête.
La requête s'exécute bien, mais renvoie 0 résultats.
Pourriez-vous poster un échantillon de données de vidage?
BTW, @ChristianP , vous n'avez pas besoin
$and
ici. {X:1, Y: {$all: [5,6,7]}}
devrait fonctionner.N'requête équivalente dans le shell mongo trouver ces documents?
OriginalL'auteur Christian P | 2012-01-01
Vous devez vous connecter pour publier un commentaire.
Voici un exemple de code avec ou et et opérateurs en PHP pour un Mongo requête.
Il utilise différents noms de champ à partir de ce que vous allez trouver dans votre requête, mais il est aisé de comprendre comment l'utiliser.
Droit maintenant, je n'ai pas le temps de le changer, pour correspondre à votre requête, mais si vous avez des problèmes avec cela, laissez-moi savoir et je vais l'ajuster. Cette requête est de travailler et de trouver ce qu'il doit trouver.
OriginalL'auteur Salvador Dali