MongoDB – Multiple $ ou opérations

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.