Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der $indexOfArray Operator wird verwendet, um nach einem Element in einem Array zu suchen und den Index des ersten Vorkommens des Elements zurückzugeben. Wenn das Element nicht gefunden wird, wird es zurückgegeben -1. Dieser Operator ist nützlich für Abfragen, bei denen Sie die Position eines Elements innerhalb eines Arrays bestimmen müssen. Suchen Sie z. B. den Index eines bestimmten Werts oder Objekts in einer Liste.
Syntax
{
$indexOfArray: [ < array > , < searchElement > , < start > , < end > ]
}
Die Parameter
| Parameter | Description |
|---|---|
<array> |
Das Array, in dem Sie nach dem Element suchen möchten. |
<searchElement> |
Das Element, nach dem Sie im Array suchen. |
<start> |
(Optional) Der Index, aus dem die Suche gestartet werden soll. Wenn nicht angegeben, beginnt die Suche am Anfang des Arrays. |
<end> |
(Optional) Der Index, an dem die Suche beendet werden soll. Wenn nicht angegeben, wird die Suche bis zum Ende des Arrays verschoben. |
Examples
Betrachten Sie dieses Beispieldokument aus der Stores-Sammlung.
{
"_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"
]
}
Beispiel 1: Suchen des Indexes des ersten Vorkommens
Diese Abfrage findet die Position (Index) eines bestimmten Kategorienamens ("DJ Headphones") innerhalb des salesByCategory Arrays in der gesamten Sammlung.
db.stores.aggregate([
{
$project: {
index: {
$indexOfArray: [
"$sales.salesByCategory.categoryName",
"DJ Headphones"
]
}
}
},
// Limit the result to the first 3 documents
{ $limit: 3 }
])
Diese Abfrage gibt die folgenden Ergebnisse zurück:
[
{
"_id": "649626c9-eda1-46c0-a27f-dcee19d97f41",
"index": -1
},
{
"_id": "8345de34-73ec-4a99-9cb6-a81f7b145c34",
"index": -1
},
{
"_id": "57cc4095-77d9-4345-af20-f8ead9ef0197",
"index": -1
}
]
Beispiel 2: Suchen des Indexes in einem Bereich
Diese Abfrage findet die Position des "Schnäppchen Blitz Days"-Heraufstufungsereignisses innerhalb des promotionEvents Arrays innerhalb eines bestimmten Indizes (3 bis 5) und filtert die Ergebnisse zusammen mit der Rückgabe der ersten drei übereinstimmenden Dokumente.
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 }
])
Diese Abfrage gibt die folgenden Ergebnisse zurück:
[
{
"_id": "ced8caf0-051a-48ce-88d3-2935815261c3",
"index": 3
},
{
"_id": "509be7ce-539a-41b5-8fde-b85fb3ef3faa",
"index": 3
},
{
"_id": "d06e8136-9a7f-4b08-92c8-dc8eac73bad3",
"index": 3
}
]
Verwandte Inhalte
- Überprüfen Sie die Optionen für die Migration von MongoDB zu Azure DocumentDB.
- Weitere Informationen zur Featurekompatibilität mit MongoDB.