2011-07-25 5 views
0

j'ai les entrées JSON suivantes sur mon MongoDB:sélection de valeurs d'un tableau avec MongoDB

{a:[10, 20, 30, 40]} 
{a:[10]} 
{a:[10, 20]} 
{a:[10, 30]} 

Je veux tout sélectionner 'a' qui contient ((10 ou 20) et (30 ou 40)) ... dans cet exemple, juste le premier et le dernier

J'ai essayé (sans succès) d'utiliser $ et $ ou comme: {$ et: [{$ or: [{'a': 10}, {'a ': 20}]}, {$ or: [{' a ': 30}, {' a ': 40}]}]}

+0

Je viens d'apprendre que $ en est plus approprié au lieu de $ ou ... mais tout en les maintenant individuellement correspond, lorsque le « $ et » est ajouté, rien n'est retourné – Lem0n

Répondre

0

$ et ne fonctionne que depuis la version 1.9.1. Vérifiez db.version() et vous verrez que vous avez une version plus basse que cela car ce n'est pas encore un paquet téléchargeable (la dernière stable est 1.8.2, la dernière version est 1.9.0). Ceux-ci devraient aussi faire ce que vous voulez si la version 1.9.1 <:

db.test.find({$or:[{a:10},{a:20}], $or:[{a:30},{a:40}]}) 
db.test.find({a:{$in:[10,20]}, a:{$in:[30,40]}}) 
Questions connexes