Documentation

Cookies

Nous utilisons les cookies afin de vous garantir la meilleure expérience sur notre site. Vous pouvez modifier vos préférences à tout moment en cliquant sur "Cookies" en pied de page.

Opérateurs logiques

Les opérateurs logiques vous permettent de combiner plusieurs conditions pour créer des filtres plus précis. Découvrez $and, $or et $not.

Vue d'ensemble

MEL propose trois opérateurs logiques :

OpérateurDescriptionRésultat
$andET logiqueVrai si toutes les conditions sont vraies
$orOU logiqueVrai si au moins une condition est vraie
$notNégationInverse le résultat d'une condition

Bon à savoir

$and et $or prennent un tableau d'au moins 2 conditions. $not s'applique à une seule comparaison.

$and - ET logique

L'opérateur $and combine plusieurs conditions. L'expression est vraie uniquement si toutes les conditions sont vraies.

Par exemple, pour trouver les commandes validées d'un bénéficiaire spécifique :

JSON
{
  "$and": [
    { "beneficiary": { "$eq": 2 } },
    { "status": { "$eq": "validated" } }
  ]
}

Cette expression se lit : "Trouve les éléments où le bénéficiaire est 2 ET le statut est validated".

Exemple avec 3 conditions

Vous pouvez combiner autant de conditions que nécessaire :

JSON
{
  "$and": [
    { "status": { "$eq": "active" } },
    { "amount": { "$gt": 100 } },
    { "category": { "$in": ["premium", "gold"] } }
  ]
}

Astuce

Si vous avez plusieurs conditions sur des champs différents sans opérateur logique, MEL les combine implicitement avec un $and. Mais il est recommandé d'être explicite pour plus de clarté.

$or - OU logique

L'opérateur $or est vrai si au moins une des conditions est vraie. C'est utile quand vous avez plusieurs critères alternatifs.

Par exemple, pour trouver les éléments qui sont soit des factures, soit des dépenses :

JSON
{
  "$or": [
    { "type": { "$eq": "invoice" } },
    { "type": { "$eq": "expense" } }
  ]
}

Cette expression se lit : "Trouve les éléments où le type est invoice OU le type est expense".

Conseil

Dans ce cas précis, il serait plus simple d'utiliser $in :
{ "type": { "$in": ["invoice", "expense"] } }
Utilisez $or quand les conditions portent sur des champs différents ou utilisent des opérateurs différents.

Exemple avec champs différents

$or est particulièrement utile quand les conditions portent sur des champs différents :

JSON
{
  "$or": [
    { "isUrgent": { "$eq": true } },
    { "priority": { "$eq": 1 } },
    { "deadline": { "$lt": "2024-01-15" } }
  ]
}

Cette expression trouve les éléments urgents, OU de priorité 1, OU dont la date limite est passée.

$not - Négation

L'opérateur $not inverse le résultat d'une comparaison. Il s'applique à une seule condition de comparaison.

Par exemple, pour trouver les éléments dont le statut n'est PAS "draft" :

JSON
{ "status": { "$not": { "$eq": "draft" } } }

Cette syntaxe peut sembler lourde, mais elle est utile pour inverser des opérateurs complexes. Par exemple, pour trouver les éléments qui ne correspondent PAS à un pattern :

JSON
{ "email": { "$not": { "$regex": "@temp\.com$" } } }

Alternative

Pour les cas simples, préférez $ne (not equal) plutôt que $not avec $eq.
{ "status": { "$ne": "draft" } } est plus concis.

Combinaisons

La vraie puissance de MEL vient de la possibilité de combiner ces opérateurs. Vous pouvez imbriquer $and et $orpour créer des logiques complexes.

$and avec $or imbriqué

Trouvez les commandes validées qui sont soit des factures, soit des dépenses :

JSON
{
  "$and": [
    { "status": { "$eq": "validated" } },
    {
      "$or": [
        { "type": { "$eq": "invoice" } },
        { "type": { "$eq": "expense" } }
      ]
    }
  ]
}

Exemple complexe

Un filtre plus élaboré combinant plusieurs niveaux :

JSON
{
  "$and": [
    {
      "$and": [
        { "beneficiary": { "$eq": 2 } },
        { "status": { "$eq": "validated" } }
      ]
    },
    {
      "$or": [
        { "type": { "$eq": "invoice" } },
        { "type": { "$eq": "expense" } }
      ]
    },
    { "status": { "$not": { "$eq": "draft" } } }
  ]
}

Attention à la lisibilité

Les expressions très imbriquées deviennent difficiles à lire et à maintenir. Si votre expression dépasse 3-4 niveaux, envisagez de la simplifier ou de la découper en plusieurs filtres.

Tableau récapitulatif de logique

ExpressionEn français
$and: [A, B]A est vrai ET B est vrai
$or: [A, B]A est vrai OU B est vrai (ou les deux)
$not: AA n'est PAS vrai
$and: [A, $or: [B, C]]A est vrai ET (B ou C est vrai)

Prochaine étape

Vous savez maintenant combiner des conditions. L'étape suivante approfondit les expressions imbriquées avec des exemples concrets.