2010-10-02 8 views

Répondre

1

Vous pouvez utiliser l'expression $or.

db.things.find ({$ ou: [{a 1}, {b 1}], ou $: [{c: 2}, {d: 2}]})

+0

Bonne idée mais clairement la mauvaise réponse. Cas de test: db.things.save ({"b": 1, "c": 2}); db.things.find ({$ or: [{a: 1, b: 1}, {c: 2, d: 2}]}); Satisfait les deux moitiés de la clause et d'en haut, mais ne revient pas avec votre requête. –

+0

@Gates VP: Vous avez raison en effet. Merci d'avoir remarqué, j'ai mis à jour ma réponse. – halfdan

1

@Drew, la bonne réponse pour cette requête est la suivante:

db.test.find({ $or : [ { a : 1}, { b : 1 } ], $or : [ { c : 2 }, { d : 2 } ] })

C'est a = 1 or b = 1etc = 2 or d = 2. Si vous regardez le code, vous remarquerez que vous avez deux clauses ou séparées par une virgule. Lorsque vous faites une recherche, la virgule est effectivement la clause et. Pour les documents sur l'utilisation de la clause $ or, voir here.

+0

Merci, maintenant je me demande comment je l'utilise avec la bibliothèque node-mongodb-native. Ce n'est pas un objet javascript valide car il possède deux clés du même nom. –

+0

De plus, y a-t-il de la documentation à ce sujet? –

+0

OK, NodeJS et NodeMongo sont vraiment nouveaux. Nous parlons d'un premier commit le 4 juillet. Honnêtement, je voudrais juste aller à la page github et message les développeurs directement: http://github.com/christkv/node-mongodb-native –

Questions connexes