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 $map Operator wird verwendet, um einen Ausdruck auf jedes Element in einem Array anzuwenden und ein Array mit den angewendeten Ergebnissen zurückzugeben. Dieser Operator eignet sich zum Transformieren von Arrays in Dokumenten, z. B. zum Ändern jedes Elements oder zum Extrahieren bestimmter Felder.
Syntax
{
$map: {
input: <array>,
as: <variable>,
in: <expression>
}
}
Die Parameter
| Parameter | Description |
|---|---|
input |
Das array, das vom Ausdruck verarbeitet wird. |
as |
Der Variablename für jedes Element im Array. |
in |
Der Ausdruck, der auf jedes Element angewendet werden soll. |
Examples
Betrachten Sie dieses Beispieldokument aus der Stores-Sammlung.
{
"_id": "988d2dd1-2faa-4072-b420-b91b95cbfd60",
"name": "Lakeshore Retail",
"location": {
"lat": -51.3041,
"lon": -166.0838
},
"staff": {
"totalStaff": {
"fullTime": 5,
"partTime": 20
}
},
"sales": {
"totalSales": 266491,
"salesByCategory": [
{
"categoryName": "Towel Racks",
"totalSales": 13237
},
{
"categoryName": "Washcloths",
"totalSales": 44315
},
{
"categoryName": "Face Towels",
"totalSales": 42095
},
{
"categoryName": "Toothbrush Holders",
"totalSales": 47912
},
{
"categoryName": "Hybrid Mattresses",
"totalSales": 48660
},
{
"categoryName": "Napkins",
"totalSales": 31439
},
{
"categoryName": "Pillow Cases",
"totalSales": 38833
}
]
},
"tag": [
"#ShopLocal",
"#FashionStore",
"#SeasonalSale",
"#FreeShipping",
"#MembershipDeals"
]
}
Beispiel 1: Extrahieren von Kategorienamen
Diese Abfrage filtert die stores Auflistung nach _id, und projiziert dann ein neues Feld categoryNames , bei dem jedes Element im Array salesByCategory seine TotalSales um 500 mit dem operator $map erhöht hat.
db.stores.aggregate([{
$match: {
_id: "988d2dd1-2faa-4072-b420-b91b95cbfd60"
}
},
{
$project: {
categoryNames: {
$map: {
input: "$sales.salesByCategory.totalSales",
as: "category",
in: {
$add: ["$$category", 500]
}
}
}
}
}
])
Diese Abfrage gibt das folgende Ergebnis zurück.
[
{
"_id": "988d2dd1-2faa-4072-b420-b91b95cbfd60",
"categoryNames": [
13737,
44815,
42595,
48412,
49160,
31939,
39333
]
}
]
Verwandte Inhalte
- Überprüfen Sie die Optionen für die Migration von MongoDB zu Azure DocumentDB.
- Weitere Informationen zur Featurekompatibilität mit MongoDB.