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 de comparaison

MEL propose 10 opérateurs de comparaison pour tester vos données de différentes manières. Découvrez comment les utiliser pour créer des filtres précis et puissants.

Vue d'ensemble

Voici tous les opérateurs de comparaison disponibles dans MEL :

OpérateurSignificationExemple
$eqEst égal à{ "status": { "$eq": "active" } }
$neEst différent de{ "status": { "$ne": "draft" } }
$gtEst supérieur à{ "price": { "$gt": 100 } }
$gteEst supérieur ou égal à{ "quantity": { "$gte": 5 } }
$ltEst inférieur à{ "age": { "$lt": 18 } }
$lteEst inférieur ou égal à{ "score": { "$lte": 50 } }
$inEst dans la liste{ "type": { "$in": ["A", "B"] } }
$ninN'est pas dans la liste{ "status": { "$nin": ["deleted"] } }
$existsLe champ existe (ou non){ "email": { "$exists": true } }
$regexCorrespond au pattern{ "name": { "$regex": "^Jean" } }

Égalité ($eq, $ne)

$eq - Est égal à

L'opérateur $eq vérifie si un champ est exactement égal à une valeur donnée. C'est l'opérateur le plus utilisé.

JSON
// Trouver les éléments actifs
{ "status": { "$eq": "active" } }

// Trouver les commandes du client 42
{ "clientId": { "$eq": 42 } }

// Trouver les éléments validés
{ "isValidated": { "$eq": true } }

$ne - Est différent de

L'opérateur $ne (not equal) fait l'inverse : il sélectionne les éléments dont le champ n'est PAS égal à la valeur.

JSON
// Exclure les brouillons
{ "status": { "$ne": "draft" } }

// Trouver tout sauf le projet 123
{ "projectId": { "$ne": 123 } }

// Exclure les éléments non validés
{ "isValidated": { "$ne": false } }

Bon à savoir

$eq gère intelligemment les tableaux : si le champ contient un tableau avec un seul élément, il comparera avec cet élément.

Comparaisons numériques

Ces quatre opérateurs permettent de comparer des valeurs numériques :

$gt - Supérieur à (greater than)

JSON
// Commandes de plus de 1000€
{ "amount": { "$gt": 1000 } }

// Produits créés après le 1er janvier
{ "createdAt": { "$gt": "2024-01-01" } }

$gte - Supérieur ou égal à (greater than or equal)

JSON
// Quantité au moins égale à 5
{ "quantity": { "$gte": 5 } }

// Score minimal de 80
{ "score": { "$gte": 80 } }

$lt - Inférieur à (less than)

JSON
// Prix inférieur à 50€
{ "price": { "$lt": 50 } }

// Utilisateurs de moins de 18 ans
{ "age": { "$lt": 18 } }

$lte - Inférieur ou égal à (less than or equal)

JSON
// Score maximum de 100
{ "score": { "$lte": 100 } }

// Stock épuisé ou critique (≤ 5)
{ "stock": { "$lte": 5 } }

Astuce

Ces opérateurs fonctionnent aussi avec les dates au format ISO 8601 (YYYY-MM-DD ou YYYY-MM-DDTHH:MM:SS).

Appartenance ($in, $nin)

$in - Est dans la liste

L'opérateur $in vérifie si la valeur du champ fait partie d'une liste de valeurs possibles. C'est comme un "OU" sur plusieurs valeurs.

JSON
// Statuts actifs ou en attente
{ "status": { "$in": ["active", "pending", "review"] } }

// Priorité haute ou critique
{ "priority": { "$in": [1, 2] } }

// Types de contrats spécifiques
{ "contractType": { "$in": ["CDI", "CDD", "Interim"] } }

$nin - N'est pas dans la liste

L'opérateur $nin (not in) fait l'inverse : il exclut les éléments dont la valeur est dans la liste.

JSON
// Exclure les éléments supprimés ou archivés
{ "status": { "$nin": ["deleted", "archived"] } }

// Tout sauf les catégories A et B
{ "category": { "$nin": ["A", "B"] } }

Rappel : syntaxe raccourcie

N'oubliez pas que vous pouvez utiliser la syntaxe raccourcie pour $in :
{ "status": ["active", "pending"] } est équivalent à
{ "status": { "$in": ["active", "pending"] } }

Existence ($exists)

L'opérateur $exists vérifie si un champ est présent (ou absent) dans l'objet, indépendamment de sa valeur.

JSON
// Éléments qui ont un email défini
{ "email": { "$exists": true } }

// Éléments sans date de suppression
{ "deletedAt": { "$exists": false } }

// Éléments avec une adresse
{ "address": { "$exists": true } }

Attention

$exists: true vérifie que le champ existe, même s'il contient null ou une chaîne vide. Si vous voulez vérifier qu'un champ a une valeur non nulle, combinez avec $ne.

Expressions régulières ($regex)

L'opérateur $regex permet de chercher des correspondances avec un pattern (expression régulière). C'est très puissant pour les recherches textuelles.

JSON
// Noms commençant par "Jean"
{ "name": { "$regex": "^Jean" } }

// Emails du domaine example.com
{ "email": { "$regex": "@example\.com$" } }

// Codes contenant des chiffres
{ "code": { "$regex": "[0-9]+" } }

Patterns courants

PatternSignification
^texteCommence par "texte"
texte$Finit par "texte"
.*texte.*Contient "texte"
[0-9]+Un ou plusieurs chiffres
[A-Za-z]+Une ou plusieurs lettres

Attention aux caractères spéciaux

Certains caractères ont une signification spéciale dans les regex : . * + ? ^ $ { } [ ] \\ | ( ). Pour les utiliser littéralement, précédez-les d'un antislash : \\. pour un point.

Gestion des tableaux

MEL gère intelligemment les comparaisons impliquant des tableaux :

Champ tableau vs valeur simple

Si le champ contient un tableau et que vous comparez avec une valeur simple, MEL vérifie si la valeur est présente dans le tableau.

JSON
// Si tags = ["urgent", "important", "review"]
// Cette expression retourne true
{ "tags": { "$eq": "urgent" } }

Tableau vs tableau

Si les deux valeurs sont des tableaux, MEL vérifie s'il y a une intersection (au moins un élément en commun).

JSON
// Si userRoles = ["admin", "editor"]
// et que vous cherchez ["admin", "viewer"]
// Cette expression retourne true (admin est commun)
{ "userRoles": { "$in": ["admin", "viewer"] } }

Bon à savoir

Cette gestion automatique des tableaux rend MEL très flexible. Vous n'avez pas besoin de vous soucier si un champ contient une valeur unique ou un tableau de valeurs.

Prochaine étape

Vous maîtrisez maintenant les opérateurs de comparaison. L'étape suivante est de découvrir comment combiner plusieurs conditions avec les opérateurs logiques.