Quelle est la meilleure façon de faire une requête comme celle-ci dans MongoDB?Comment faire des salles d'opération dans MongoDB?
SELECT * FROM things WHERE (a = 1 or b = 1) and (c = 2 or d = 2)
Merci.
Quelle est la meilleure façon de faire une requête comme celle-ci dans MongoDB?Comment faire des salles d'opération dans MongoDB?
SELECT * FROM things WHERE (a = 1 or b = 1) and (c = 2 or d = 2)
Merci.
Vous pouvez utiliser l'expression $or.
db.things.find ({$ ou: [{a 1}, {b 1}], ou $: [{c: 2}, {d: 2}]})
@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 = 1
etc = 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.
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. –
De plus, y a-t-il de la documentation à ce sujet? –
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 –
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. –
@Gates VP: Vous avez raison en effet. Merci d'avoir remarqué, j'ai mis à jour ma réponse. – halfdan