Exemples pratiques
Voici une collection d'exemples MEL concrets que vous pouvez réutiliser et adapter à vos besoins. Chaque exemple est accompagné d'explications détaillées.
Filtres basiques
Filtre par statut
Le cas le plus simple : afficher uniquement les éléments actifs.
{ "status": { "$eq": "active" } }Filtre par statuts multiples
Afficher les éléments dans plusieurs statuts possibles.
{ "status": { "$in": ["active", "pending", "review"] } }Version courte (syntaxe raccourcie) :
{ "status": ["active", "pending", "review"] }Exclure des statuts
Masquer les éléments supprimés ou archivés.
{ "status": { "$nin": ["deleted", "archived"] } }Filtre par montant minimum
Afficher les commandes de plus de 500€.
{ "amount": { "$gt": 500 } }Filtre par plage de valeurs
Afficher les éléments avec un score entre 50 et 100.
{
"$and": [
{ "score": { "$gte": 50 } },
{ "score": { "$lte": 100 } }
]
}Filtres par utilisateur
Mes tâches assignées
Afficher uniquement les tâches assignées à l'utilisateur connecté.
{ "assignedTo": { "$eq": "$selfUser" } }Mes tâches (format tableau)
Si le champ assignedTo peut contenir plusieurs utilisateurs.
{ "assignedTo": { "$in": ["$selfUser"] } }Éléments créés par moi
Filtrer sur le créateur.
{ "createdBy": { "$eq": "$selfUser" } }Tâches de mon équipe
Utiliser une propriété de l'utilisateur connecté.
{ "department": { "$eq": "$user.department" } }Exclure mes propres éléments
Voir ce que les autres ont créé.
{ "createdBy": { "$ne": "$selfUser" } }Cas d'usage courant
Le filtre "Mes tâches" est l'un des plus utilisés dans les applications de gestion de projet. Combinez-le avec un filtre de statut pour créer un tableau de bord personnalisé efficace.
Filtres temporels
Éléments récents
Créés après une date spécifique.
{ "createdAt": { "$gt": "2024-01-01" } }Éléments en retard
Dont la date limite est passée.
{ "deadline": { "$lt": "2024-01-20" } }Dans une période
Éléments créés au premier trimestre 2024.
{
"$and": [
{ "createdAt": { "$gte": "2024-01-01" } },
{ "createdAt": { "$lt": "2024-04-01" } }
]
}Date par rapport au contexte
Utiliser une date du contexte (ex: date du jour).
{ "createdAt": { "$eq": "$context.date" } }Format des dates
Utilisez toujours le format ISO 8601 : YYYY-MM-DD pour les dates ou YYYY-MM-DDTHH:MM:SS pour les dates avec heure.
Filtres multi-critères
Commandes validées d'un bénéficiaire
Combiner plusieurs critères obligatoires.
{
"$and": [
{ "beneficiary": { "$eq": 2 } },
{ "status": { "$eq": "validated" } }
]
}Factures ou dépenses validées
ET logique avec OU imbriqué.
{
"$and": [
{ "status": { "$eq": "validated" } },
{
"$or": [
{ "type": { "$eq": "invoice" } },
{ "type": { "$eq": "expense" } }
]
}
]
}Tâches urgentes OU assignées à moi
Priorité aux tâches importantes.
{
"$or": [
{ "isUrgent": { "$eq": true } },
{ "priority": { "$eq": 1 } },
{ "assignedTo": { "$in": ["$selfUser"] } }
]
}Filtre complet de tableau de bord
Exemple réaliste combinant plusieurs logiques.
{
"$and": [
{ "status": { "$nin": ["deleted", "archived"] } },
{ "department": { "$eq": "$user.department" } },
{
"$or": [
{ "assignedTo": { "$in": ["$selfUser"] } },
{ "createdBy": { "$eq": "$selfUser" } }
]
}
]
}Filtres avec relations
Éléments liés à l'objet courant
Trouver les enfants d'un objet.
{ "parentId": { "$eq": "$object.id" } }Même projet
Éléments du même projet, sauf l'objet lui-même.
{
"$and": [
{ "project": { "$eq": "$object.project" } },
{ "id": { "$ne": "$object.id" } }
]
}Filtre avec chemin profond
Accéder à des propriétés imbriquées.
{ "$form.order.provider.name": { "$eq": "NETKIN" } }Correspondance avec sélection formulaire
Filtrer selon les choix de l'utilisateur dans un formulaire.
{ "contractType": { "$in": "$form.selectedTypes" } }Filtres de recherche
Recherche par préfixe
Noms commençant par une chaîne.
{ "name": { "$regex": "^Jean" } }Recherche par suffixe
Emails d'un domaine spécifique.
{ "email": { "$regex": "@company\.com$" } }Recherche partielle
Contient une chaîne.
{ "description": { "$regex": "urgent" } }Codes avec format spécifique
Codes suivant un pattern (3 lettres, tiret, 4 chiffres).
{ "code": { "$regex": "^[A-Z]{3}-[0-9]{4}$" } }Vérifier l'existence d'un champ
Éléments avec un email renseigné.
{ "email": { "$exists": true } }Performance
Les filtres avec $regex peuvent être plus lents sur de grandes quantités de données. Préférez les filtres d'égalité ou d'appartenance quand c'est possible.
Prochaine étape
Vous avez maintenant un arsenal d'exemples à adapter. Terminez avec les bonnes pratiques pour écrire des expressions MEL optimales.