Imaginons que nous voulions la fiche des femmes de plus de 40 ans.

Nous avons ici 2 contraintes : sexe:"F" et age:{$gt:40} dans la même requête.

Pour obtenir ce "et", il suffit de séparer les 2 contraintes par une virgule.

À faire vous-même 6.1

Dans la console mongoDB, taper la requête suivante :


db.fiches.find({sexe:"F", age:{$gt:40}})
			

Que retourne cette requête ?


Si vous désirez ajouter des contraintes, il suffit de les mettre les unes après les autres en les séparant par des virgules

exemple :


db.fiches.find({sexe:"F", age:{$gt:40}, secret:false})
			

Il est aussi possible d'utiliser un "ou" comme dans : "Nous voulons la fiche des personnes de plus de 45 ans et des personnes ayant un profil "secret"."

Attention, malgré la présence d'un "et" dans notre demande nous allons devoir utiliser un "ou" dans notre requête (puisqu'il nous faut à la fois les fiches des personnes de plus de 45 ans et les fiches des personnes ayant un profil "secret") : age:{$gt:45} ou secret:true

À faire vous-même 6.2

Dans la console mongoDB, taper la requête suivante :


db.fiches.find({$or:[{age:{$gt:45}}, {secret:true}]})
			

Vérifier que le résultat retourné est correct.


Il est possible de combiner les "et" et les "ou"

Comment répondre à la demande suivante :

Nous voulons la fiche des femmes qui ont moins de 30 ans ou qui ont profil "public". (attention nous avons ici un "ou", pas un "ou exclusif" : la fiche d'une femme de moins de 30 ans qui a un profil "public" sera prise en compte par cette requête.)

À faire vous-même 6.3

Dans la console mongoDB, taper la requête suivante :


db.fiches.find({sexe:"F", $or:[{age:{$lt:30}}, {secret:false}]})
			

Vérifier que le résultat retourné est correct.


Comme vous pouvez le constater les requêtes peuvent être complexes, attention à ne pas vous "emmêler les pinceaux" avec les "et" et les "ou" !

À faire vous-même 6.4

Écrire et tester la requête permettant de récupérer la fiche des hommes de plus de 50 ans qui se prénomment Pierre ou Gérard

Pour information, vous ne devriez avoir qu'une seule réponse