Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’opérateur $regex fournit des fonctionnalités d’expression régulière pour la correspondance de modèles dans les requêtes. Il vous permet de rechercher des documents dans lesquels un champ correspond à un modèle d’expression régulière spécifié. Cet opérateur est utile pour la recherche de chaînes flexibles, la validation de modèle et les opérations de filtrage de texte complexes.
Syntaxe
La syntaxe de l’opérateur $regex est la suivante :
{
<field>: { $regex: <pattern>, $options: <options> }
}
Ou le formulaire plus court :
{
<field>: { $regex: /<pattern>/<options> }
}
Paramètres
| Paramètre | Descriptif |
|---|---|
<field> |
Champ dans lequel effectuer une recherche. Doit contenir des valeurs de chaîne. |
<pattern> |
Modèle d’expression régulière à mettre en correspondance. |
<options> |
Optional. Options d’expression régulière, telles que la correspondance sans respect de la casse. Les options courantes incluent 'i' (ne respectant pas la casse), 'm' (multiligne), 's' (dot all) et 'x' (étendu). |
Examples
Considérez cet exemple de document de la collection des magasins.
{
"_id": "39acb3aa-f350-41cb-9279-9e34c004415a",
"name": "First Up Consultants | Bed and Bath Pantry - Port Antone",
"location": {
"lat": 87.2239,
"lon": -129.0506
},
"staff": {
"employeeCount": {
"fullTime": 8,
"partTime": 7
}
},
"sales": {
"salesByCategory": [
{ "categoryName": "Towel Sets", "totalSales": 520 },
{ "categoryName": "Bath Accessories", "totalSales": 41710 },
{ "categoryName": "Drapes", "totalSales": 42893 },
{ "categoryName": "Towel Racks", "totalSales": 30773 },
{ "categoryName": "Hybrid Mattresses", "totalSales": 39491 },
{ "categoryName": "Innerspring Mattresses", "totalSales": 6410 },
{ "categoryName": "Bed Frames", "totalSales": 41917 },
{ "categoryName": "Mattress Protectors", "totalSales": 44124 },
{ "categoryName": "Bath Towels", "totalSales": 5671 },
{ "categoryName": "Turkish Towels", "totalSales": 25674 }
],
"revenue": 279183
},
"promotionEvents": [
{
"eventName": "Discount Derby",
"promotionalDates": {
"startDate": { "Year": 2023, "Month": 12, "Day": 26 },
"endDate": { "Year": 2024, "Month": 1, "Day": 5 }
},
"discounts": [
{ "categoryName": "Microfiber Towels", "discountPercentage": 6 },
{ "categoryName": "Bath Sheets", "discountPercentage": 16 },
{ "categoryName": "Towels", "discountPercentage": 10 },
{ "categoryName": "Hand Towels", "discountPercentage": 11 },
{ "categoryName": "Kitchen Towels", "discountPercentage": 21 },
{ "categoryName": "Placemat", "discountPercentage": 11 },
{ "categoryName": "Bath Accessories", "discountPercentage": 11 },
{ "categoryName": "Bedspreads", "discountPercentage": 21 },
{ "categoryName": "Shower Curtains", "discountPercentage": 24 },
{ "categoryName": "Pillow Top Mattresses", "discountPercentage": 10 }
]
},
{
"eventName": "Big Bargain Blitz",
"promotionalDates": {
"startDate": { "Year": 2024, "Month": 3, "Day": 25 },
"endDate": { "Year": 2024, "Month": 4, "Day": 3 }
},
"discounts": [
{ "categoryName": "Mattress Toppers", "discountPercentage": 24 },
{ "categoryName": "Pillow Cases", "discountPercentage": 14 },
{ "categoryName": "Soap Dispensers", "discountPercentage": 20 },
{ "categoryName": "Beach Towels", "discountPercentage": 18 },
{ "categoryName": "Bath Mats", "discountPercentage": 22 },
{ "categoryName": "Blankets", "discountPercentage": 12 },
{ "categoryName": "Kitchen Towels", "discountPercentage": 8 },
{ "categoryName": "Memory Foam Mattresses", "discountPercentage": 14 },
{ "categoryName": "Placemat", "discountPercentage": 17 },
{ "categoryName": "Bed Frames", "discountPercentage": 23 }
]
},
{
"eventName": "Massive Markdown Mania",
"promotionalDates": {
"startDate": { "Year": 2024, "Month": 6, "Day": 23 },
"endDate": { "Year": 2024, "Month": 6, "Day": 30 }
},
"discounts": [
{ "categoryName": "Bed Skirts", "discountPercentage": 17 },
{ "categoryName": "Shower Curtains", "discountPercentage": 23 },
{ "categoryName": "Bath Towels", "discountPercentage": 21 },
{ "categoryName": "Memory Foam Mattresses", "discountPercentage": 11 },
{ "categoryName": "Bathrobes", "discountPercentage": 19 },
{ "categoryName": "Bath Accessories", "discountPercentage": 5 },
{ "categoryName": "Box Springs", "discountPercentage": 21 },
{ "categoryName": "Hand Towels", "discountPercentage": 13 },
{ "categoryName": "Tablecloths", "discountPercentage": 19 },
{ "categoryName": "Duvet Covers", "discountPercentage": 23 }
]
},
{
"eventName": "Unbeatable Bargain Bash",
"promotionalDates": {
"startDate": { "Year": 2024, "Month": 9, "Day": 21 },
"endDate": { "Year": 2024, "Month": 9, "Day": 30 }
},
"discounts": [
{ "categoryName": "Adjustable Beds", "discountPercentage": 19 },
{ "categoryName": "Mattress Toppers", "discountPercentage": 23 },
{ "categoryName": "Washcloths", "discountPercentage": 7 },
{ "categoryName": "Comforters", "discountPercentage": 24 },
{ "categoryName": "Kitchen Towels", "discountPercentage": 7 },
{ "categoryName": "Pillows", "discountPercentage": 13 },
{ "categoryName": "Bath Sheets", "discountPercentage": 25 },
{ "categoryName": "Napkins", "discountPercentage": 25 },
{ "categoryName": "Bath Towels", "discountPercentage": 15 },
{ "categoryName": "Beach Towels", "discountPercentage": 15 }
]
}
],
"company": "First Up Consultants",
"city": "Port Antone",
"storeOpeningDate": { "$date": "2024-09-19T17:31:59.665Z" },
"lastUpdated": { "$timestamp": { "t": 1729359119, "i": 1 } }
}
Exemple 1 : Rechercher des magasins par modèle de nom
Cette requête récupère tous les magasins contenant « Consultants » dans leur nom (sans respect de la casse).
db.stores.find(
{ name: { $regex: "Consultants", $options: "i" } },
{ _id: 1, name: 1, storeOpeningDate: 1 }
).limit(3)
Les trois premiers résultats retournés par cette requête sont les suivants :
[
{
"_id": "39acb3aa-f350-41cb-9279-9e34c004415a",
"name": "First Up Consultants | Bed and Bath Pantry - Port Antone",
"storeOpeningDate": "2024-09-19T17:31:59.665Z"
},
{
"_id": "26afb024-53c7-4e94-988c-5eede72277d5",
"name": "First Up Consultants | Microphone Bazaar - South Lexusland",
"storeOpeningDate": "2024-09-10T13:43:51.209Z"
},
{
"_id": "62438f5f-0c56-4a21-8c6c-6bfa479494ad",
"name": "First Up Consultants | Plumbing Supply Shoppe - New Ubaldofort",
"storeOpeningDate": "2024-09-19T08:27:44.268Z"
}
]
Exemple 2 : Correspondance de modèle avancé pour les noms de catégorie
Cette requête récupère les magasins vendant des produits avec un nom de catégorie qui commence par une voyelle.
db.stores.find(
{
"sales.salesByCategory.categoryName": { $regex: "^[AEIOUaeiou]" }
},
{ _id: 1, name: 1, "sales.salesByCategory.categoryName": 1 }
).limit(2)
Les deux premiers résultats retournés par cette requête sont les suivants :
[
{
"_id": "e6410bb3-843d-4fa6-8c70-7472925f6d0a",
"name": "Relecloud | Toy Collection - North Jaylan",
"sales": {
"salesByCategory": [
{ "categoryName": "Educational Toys" }
]
}
},
{
"_id": "4e064f0a-7e30-4701-9a80-eff3caf46ce8",
"name": "Fourth Coffee | Outdoor Furniture Deals - Lucianohaven",
"sales": {
"salesByCategory": [
{ "categoryName": "Outdoor Swings" },
{ "categoryName": "Hammocks" }
]
}
}
]
Exemple 3 : Rechercher des magasins avec des conventions d’affectation de noms spécifiques
Cette requête récupère les magasins avec des noms contenant un séparateur de caractères de canal (|).
db.stores.find(
{ name: { $regex: "\\|" }},
{ _id: 1, name: 1, "sales.salesByCategory.categoryName": 1}).limit(2)
Les deux premiers résultats retournés par cette requête sont les suivants :
[
{
"_id": "905d1939-e03a-413e-a9c4-221f74055aac",
"name": "Trey Research | Home Office Depot - Lake Freeda",
"sales": {
"salesByCategory": [
{ "categoryName": "Desk Lamps" }
]
}
},
{
"_id": "a715ab0f-4c6e-4e9d-a812-f2fab11ce0b6",
"name": "Lakeshore Retail | Holiday Supply Hub - Marvinfort",
"sales": {
"salesByCategory": [
{ "categoryName": "Stockings" }
]
}
}
]
Exemple 4 : Modèle complexe pour les catégories de remise
Cette requête récupère les magasins avec des catégories contenant à la fois « Bath » et se terminant par « s ».
db.stores.aggregate([
{ $match: { "promotionEvents.discounts.categoryName": { $regex: "Bath.*s$", $options: "i" } } },
{ $project: { "_id": 1, "name": 1, "promotionEvents.discounts.categoryName":1 }},
{ $match: {"promotionEvents.discounts.categoryName": { $ne: [] }} },
{ $limit: 2 }])
Les deux premiers résultats retournés par cette requête sont les suivants :
[
{
"_id": "39acb3aa-f350-41cb-9279-9e34c004415a",
"name": "First Up Consultants | Bed and Bath Pantry - Port Antone",
"promotionEvents": [
{
"discounts": [
{ "categoryName": "Bath Sheets", "discountPercentage": 16 },
{ "categoryName": "Bath Accessories", "discountPercentage": 11 }
]
},
{
"discounts": [
{ "categoryName": "Bath Mats", "discountPercentage": 22 }
]
},
{
"discounts": [
{ "categoryName": "Bath Towels", "discountPercentage": 21 },
{ "categoryName": "Bathrobes", "discountPercentage": 19 },
{ "categoryName": "Bath Accessories", "discountPercentage": 5 }
]
},
{
"discounts": [
{ "categoryName": "Bath Sheets", "discountPercentage": 25 },
{ "categoryName": "Bath Towels", "discountPercentage": 15 }
]
}
]
},
{
"_id": "27ef6004-70fa-4217-8395-0eabc4cc9841",
"name": "Fabrikam, Inc. | Bed and Bath Store - O'Connerborough",
"promotionEvents": [
{
"discounts": [
{ "categoryName": "Bath Accessories", "discountPercentage": 24 }
]
},
{
"discounts": [
{ "categoryName": "Bathrobes", "discountPercentage": 18 },
{ "categoryName": "Bath Towels", "discountPercentage": 14 },
{ "categoryName": "Bath Accessories", "discountPercentage": 20 }
]
}
]
}
]