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.

Syntaxe de base

Avant de créer des expressions MEL complexes, commençons par comprendre la structure fondamentale du langage et les types de données disponibles.

Structure JSON

MEL utilise le format JSON (JavaScript Object Notation) pour décrire vos expressions. Si vous n'êtes pas familier avec JSON, voici les bases : il s'agit d'une façon de structurer des données avec des accolades, des crochets et des guillemets.

Voici la structure typique d'une expression MEL :

JSON
{
  "nomDuChamp": {
    "$operateur": valeur
  }
}

Les éléments clés sont :

  • Les accolades { } délimitent un objet
  • Les clés sont toujours entre guillemets doubles
  • Le deux-points : sépare la clé de sa valeur
  • Les opérateurs commencent toujours par $

Bon à savoir

JSON est strict sur la syntaxe : n'oubliez pas les guillemets autour des clés et des chaînes de caractères, et attention aux virgules entre les éléments. L'éditeur MEL dans Miel vous aidera à repérer les erreurs de syntaxe.

Types primitifs

MEL supporte plusieurs types de valeurs que vous pouvez utiliser dans vos expressions.

Chaînes de caractères (texte)

Le texte est toujours entouré de guillemets doubles :

JSON
{ "status": { "$eq": "active" } }
{ "name": { "$eq": "Jean Dupont" } }
{ "code": { "$eq": "ABC-123" } }

Nombres

Les nombres s'écrivent sans guillemets, qu'ils soient entiers ou décimaux :

JSON
{ "quantity": { "$eq": 42 } }
{ "price": { "$gt": 99.99 } }
{ "discount": { "$eq": -10 } }

Attention

"42" (avec guillemets) est une chaîne de caractères, tandis que 42 (sans guillemets) est un nombre. La comparaison { "age": { "$eq": "25" } } ne trouvera pas les enregistrements où age vaut le nombre 25.

Booléens

Les valeurs true (vrai) et false (faux) s'écrivent en minuscules, sans guillemets :

JSON
{ "isActive": { "$eq": true } }
{ "archived": { "$eq": false } }

Null

La valeur null représente l'absence de valeur :

JSON
{ "deletedAt": { "$eq": null } }

Tableaux

Les tableaux (listes) sont délimités par des crochets :

JSON
{ "status": { "$in": ["active", "pending", "review"] } }
{ "priority": { "$in": [1, 2, 3] } }

Comparaison simple

La forme la plus simple d'une expression MEL est une comparaison sur un champ. La structure est toujours la même :

JSON
{ "champ": { "$operateur": valeur } }

Par exemple, pour trouver les éléments avec un statut égal à "validated" :

JSON
{ "status": { "$eq": "validated" } }

Une fois analysée par Miel, cette expression est normalisée en objet structuré :

TypeScript
{
  type: 'comparison',
  field: 'status',
  op: '$eq',
  value: 'validated'
}

Vous n'avez pas besoin de vous soucier de cette représentation interne, mais elle illustre comment Miel interprète votre expression.

Syntaxe raccourcie

MEL propose une syntaxe raccourcie pour le cas courant où vous cherchez une valeur parmi plusieurs possibilités. Si vous utilisez un tableau directement comme valeur, il est automatiquement transformé en opérateur $in.

Ces deux expressions sont équivalentes :

JSON
// Syntaxe raccourcie
{ "project": ["id1", "id2", "id3"] }

// Équivalent à
{ "project": { "$in": ["id1", "id2", "id3"] } }

Cette syntaxe rend vos expressions plus concises quand vous cherchez des correspondances dans une liste de valeurs.

Astuce

La syntaxe raccourcie est particulièrement utile pour les filtres de sélection multiple, comme filtrer par plusieurs statuts ou plusieurs catégories à la fois.

Références de champs

L'une des fonctionnalités puissantes de MEL est la possibilité d'utiliser des références à d'autres champs comme valeurs de comparaison.

Une référence de champ commence par $ et suit le format :

text
$source.chemin.vers.champ

Par exemple, pour comparer un champ "order" avec l'ID de l'objet courant :

JSON
{ "order": { "$eq": "$object.id" } }

Ou pour vérifier qu'un champ contient une valeur présente dans un formulaire :

JSON
{ "contractType": { "$in": "$form.selectedTypes" } }

Nous verrons en détail toutes les sources de données disponibles dans la section suivante.

Prochaine étape

Vous connaissez maintenant la structure de base de MEL. L'étape suivante est de découvrir les différentes sources de données que vous pouvez interroger.