Comment aurais-je plusieurs $ ou opérations? Jusqu’à présent, j’ai essayé ce qui suit mais il ignore silencieusement le 2ème $ ou.
{ $or: [{a: 2}, {a: 3}], $or: [{b: 5}, {b: 4}] }
Je suppose que c’est parce que j’utilise deux clés identiques. Y a-t-il un moyen de contourner cela?
Mongo 2.0 a ajouté un opérateur $ et un opérateur, vous pouvez donc faire une requête comme celle-ci:
db.things.find({$and: [{$or : [{'a':1},{'b':2}]},{$or : [{'a':2},{'b':3}]}] })
http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24and
$ et ne fera pas le travail, depuis le 2ème $ ou ne validera pas si le premier échoue.
De la page de manuel Mongo:
L’opérateur $ et l’opérateur utilisent l’évaluation de court-circuit. Si la première expression (par exemple) est fausse, MongoDB n’évaluera pas les expressions restantes.
Nested $ ou devrait cependant faire l’affaire:
db.things.find ({$ ou: [{$ ou: [{‘a’: 1}, {‘b’: 2}]}, {$ ou: [{‘a’: 2}, {‘b ‘: 3}]}]})
Pour multiple comme dans sql, nous utilisons $ in et non, nous utilisons $ nin vc est notre nom de collection ici. Nous trouvons que cette chaîne contient cpu ou memo.
db.collection('vc').find({ "name" : { $in: [ /cpu/, /memo/ ] } }
Vous ne pouvez pas imbriquer plusieurs $ ou déclarations.
Ceci est documenté ici:
http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24ou
En dehors de cela: votre requête a beaucoup de sens.
Si vous essayez de demander un être soit 2 ou 3 et b soit 5 ou 4:
{a: {$ in: [2,3]}, b: {$ in: [4,5]}}
S’il vous plaît, n’essayez pas d’inventer une nouvelle syntaxe.