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 $indexOfArray est utilisé pour rechercher un élément dans un tableau et retourner l’index de la première occurrence de l’élément. Si l’élément est introuvable, il retourne -1. Cet opérateur est utile pour les requêtes où vous devez déterminer la position d’un élément dans un tableau. Par exemple, recherchez l’index d’une valeur ou d’un objet spécifique dans une liste.
Syntaxe
{
$indexOfArray: [ < array > , < searchElement > , < start > , < end > ]
}
Paramètres
| Paramètre | Descriptif |
|---|---|
<array> |
Tableau dans lequel vous souhaitez rechercher l’élément. |
<searchElement> |
Élément que vous recherchez dans le tableau. |
<start> |
(Facultatif) Index à partir duquel démarrer la recherche. Si elle est omise, la recherche commence à partir du début du tableau. |
<end> |
(Facultatif) Index auquel mettre fin à la recherche. En cas d’omission, la recherche est effectuée jusqu’à la fin du tableau. |
Examples
Considérez cet exemple de document de la collection des magasins.
{
"_id": "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5",
"name": "Lakeshore Retail | DJ Equipment Stop - Port Cecile",
"location": {
"lat": 60.1441,
"lon": -141.5012
},
"staff": {
"totalStaff": {
"fullTime": 2,
"partTime": 0
}
},
"sales": {
"salesByCategory": [
{
"categoryName": "DJ Headphones",
"totalSales": 35921
}
],
"fullSales": 3700
},
"promotionEvents": [
{
"eventName": "Bargain Blitz Days",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 3,
"Day": 11
},
"endDate": {
"Year": 2024,
"Month": 2,
"Day": 18
}
},
"discounts": [
{
"categoryName": "DJ Turntables",
"discountPercentage": 18
},
{
"categoryName": "DJ Mixers",
"discountPercentage": 15
}
]
}
],
"tag": [
"#ShopLocal",
"#SeasonalSale",
"#FreeShipping",
"#MembershipDeals"
]
}
Exemple 1 : Recherche de l’index de la première occurrence
Cette requête recherche la position (index) d’un nom de catégorie spécifique (« DJ Headphones ») dans le tableau dans la salesByCategory collection.
db.stores.aggregate([
{
$project: {
index: {
$indexOfArray: [
"$sales.salesByCategory.categoryName",
"DJ Headphones"
]
}
}
},
// Limit the result to the first 3 documents
{ $limit: 3 }
])
Cette requête retourne les résultats suivants :
[
{
"_id": "649626c9-eda1-46c0-a27f-dcee19d97f41",
"index": -1
},
{
"_id": "8345de34-73ec-4a99-9cb6-a81f7b145c34",
"index": -1
},
{
"_id": "57cc4095-77d9-4345-af20-f8ead9ef0197",
"index": -1
}
]
Exemple 2 : Recherche de l’index dans une plage
Cette requête recherche la position de l’événement de promotion « Bargain Blitz Days » dans le promotionEvents tableau dans une plage spécifique d’index (3 à 5) et filtre les résultats, ainsi que le renvoi des trois premiers documents correspondants
db.stores.aggregate([
// Step 1: Project the index of the "Bargain Blitz Days" event name within the specified range
{
$project: {
index: {
$indexOfArray: [
"$promotionEvents.eventName",
"Bargain Blitz Days",
3,
5
]
}
}
},
// Step 2: Match documents where index > 0
{
$match: {
index: { $gt: 0 }
}
},
// Limit the result to the first 3 documents
{ $limit: 3 }
])
Cette requête retourne les résultats suivants :
[
{
"_id": "ced8caf0-051a-48ce-88d3-2935815261c3",
"index": 3
},
{
"_id": "509be7ce-539a-41b5-8fde-b85fb3ef3faa",
"index": 3
},
{
"_id": "d06e8136-9a7f-4b08-92c8-dc8eac73bad3",
"index": 3
}
]
Contenu connexe
- Passez en revue les options de migration de MongoDB vers Azure DocumentDB.
- En savoir plus sur la compatibilité des fonctionnalités avec MongoDB.