69 votes

MongoDB - Plusieurs opérations $ ou

Comment aurais-je plusieurs $ou opérations ? Jusqu'à présent, j'ai essayé ce qui suit, mais il ignore silencieusement le 2ème $or.

 {
  $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?

121voto

Nader Points 2325

Mongo 2.0 a ajouté un opérateur $and, 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

-1voto

Gajender Singh Points 227

Pour plusieurs comme dans sql, nous utilisons $in et pour non nous utilisons $nin vc est le nom de notre collection ici. Nous trouvons que cette chaîne contient un processeur ou un mémo.

 db.collection('vc').find({   "name" :   { $in: [ /cpu/, /memo/ ]   }     }

-3voto

user1231157 Points 39

$et ne fera pas le travail, puisque le 2ème $or ne validera pas si le premier échoue.

À partir de la page de manuel de Mongo :

L'opérateur $and utilise l'évaluation de court-circuit. Si la première expression (par exemple ) est évaluée à false, MongoDB n'évaluera pas les expressions restantes.

Nested $or devrait cependant faire l'affaire :

db.things.find({$or : [{$or : [{'a':1},{'b':2}]},{$or : [{'a':2},{'b ':3}]}] })

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X