MongoDB : Comment utiliser l’opérateur OR ($or) dans les requêtes



Vous pouvez utiliser l’opérateur $or dans MongoDB pour rechercher des documents qui répondent à l’un des multiples critères.

Cet opérateur utilise la syntaxe de base suivante :

db.myCollection.find({
  "$or": [
    {"field1": "hello"},
    {"field2": {$gte : 10}}
  ]
})

Cet exemple particulier recherche tous les documents de la collection intitulée myCollectionfield1 est égal à « bonjour » ou 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: 35, 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 OR avec deux champs

Le code suivant montre comment trouver tous les documents de la collection équipes où le champ « équipe » est égal à « Spurs » ou la valeur du champ « points » est supérieure ou égale à 31 :

db.teams.find({
  "$or": [
    {"team": "Spurs"},
    {"points": {$gte: 31}}
  ]
})

Cette requête renvoie les documents suivants :

{ _id: ObjectId("62018750fd435937399d6b6f"),
  team: 'Mavs',
  points: 35,
  rebounds: 12 }
{ _id: ObjectId("62018750fd435937399d6b70"),
  team: 'Spurs',
  points: 20,
  rebounds: 7 }
{ _id: ObjectId("62018750fd435937399d6b71"),
  team: 'Spurs',
  points: 25,
  rebounds: 5 }
{ _id: ObjectId("62018750fd435937399d6b72"),
  team: 'Spurs',
  points: 23,
  rebounds: 9 } 

Notez que chaque document dans la sortie contient « Spurs » dans le champ équipe ou une valeur supérieure ou égale à 31 dans le champ points.

Exemple 2 : utiliser l’opérateur OR avec plus de deux champs

Le code suivant montre comment trouver tous les documents de la collection équipes où le champ « équipe » est égal à « Mavs » ou la valeur du champ « points » est supérieure ou égale à 25 ou la valeur du champ « rebonds » est inférieur à 8 :

db.teams.find({
  "$or": [
    {"team": "Mavs"},
    {"points": {$gte: 25}},
    {"rebounds": {$lt: 8}}
  ]
})

Cette requête renvoie le document suivant :

{ _id: ObjectId("62018750fd435937399d6b6e"),
  team: 'Mavs',
  points: 30,
  rebounds: 8 }
{ _id: ObjectId("62018750fd435937399d6b6f"),
  team: 'Mavs',
  points: 35,
  rebounds: 12 }
{ _id: ObjectId("62018750fd435937399d6b70"),
  team: 'Spurs',
  points: 20,
  rebounds: 7 }
{ _id: ObjectId("62018750fd435937399d6b71"),
  team: 'Spurs',
  points: 25,
  rebounds: 5 }

Notez que chacun de ces documents répond à un ou plusieurs des trois critères :

  • Le champ « équipe » est égal à « Mavs »
  • Le champ « points » a une valeur supérieure ou égale à 25
  • Le champ « rebonds » a une valeur inférieure à 8

Remarque : Vous pouvez trouver la documentation complète de la fonction $or ici .

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans MongoDB :

MongoDB : Comment utiliser l’opérateur AND dans les requêtes
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

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *