MongoDB : Comment utiliser l’opérateur AND ($and) dans les requêtes
Vous pouvez utiliser l’opérateur $and dans MongoDB pour rechercher des documents répondant à plusieurs critères.
Cet opérateur utilise la syntaxe de base suivante :
db.myCollection.find({
"$and": [
{"field1": "hello"},
{"field2": {$gte : 10}}
]
})
Cet exemple particulier recherche tous les documents de la collection intitulée myCollection où field1 est égal à « bonjour » et field2 a une valeur supérieure ou égale à 10.
Les exemples suivants montrent comment utiliser cette syntaxe en pratique avec une équipe de collection avec les documents suivants :
db.teams.insertOne({team: "Mavs", points: 30, rebounds: 8})
db.teams.insertOne({team: "Mavs", points: 30, rebounds: 12})
db.teams.insertOne({team: "Spurs", points: 20, rebounds: 7})
db.teams.insertOne({team: "Spurs", points: 25, rebounds: 5})
db.teams.insertOne({team: "Spurs", points: 23, rebounds: 9})
Exemple 1 : utiliser l’opérateur AND avec deux champs
Le code suivant montre comment trouver tous les documents de la collection teams où le champ « team » est égal à « Spurs » et la valeur du champ « points » est supérieure ou égale à 22 :
db.teams.find({
"$and": [
{"team": "Spurs"},
{"points": {$gte: 22}}
]
})
Cette requête renvoie les documents suivants :
{ _id: ObjectId("6201824afd435937399d6b6c"),
team: 'Spurs',
points: 25,
rebounds: 5 }
{ _id: ObjectId("6201824afd435937399d6b6d"),
team: 'Spurs',
points: 23,
rebounds: 9 }
Notez que chaque document dans la sortie contient « Spurs » dans le champ équipe et une valeur supérieure ou égale à 22 dans le champ points.
Exemple 2 : utiliser l’opérateur AND avec plus de deux champs
Le code suivant montre comment trouver tous les documents de la collection teams où le champ « team » n’est pas égal à « Mavs » et la valeur dans le champ « points » est supérieure ou égale à 22 et la valeur dans le champ « rebonds » le champ est inférieur à 7 :
db.teams.find({
"$and": [
{"team": {$ne: "Mavs"}},
{"points": {$gte: 22}},
{"rebounds": {$lt: 7}}
]
})
Cette requête renvoie le document suivant :
{ _id: ObjectId("6201824afd435937399d6b6c"),
team: 'Spurs',
points: 25,
rebounds: 5 }
Notez qu’il s’agit du seul document de la collection qui répond à chacun des trois critères :
- Le champ « équipe » n’est pas égal à « Mavs »
- Le champ « points » a une valeur supérieure ou égale à 22
- Le champ « rebonds » a une valeur inférieure à 7
Remarque : Vous pouvez trouver la documentation complète de la fonction $and ici .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans MongoDB :
MongoDB : Comment vérifier si le champ contient une chaîne
MongoDB : Comment utiliser une requête « NON IN »
MongoDB : Comment rechercher « non nul » dans un champ spécifique
