Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
GÄLLER FÖR:
MongoDB vCore
Operatorn $arrayElemAt
används för att returnera elementet vid det angivna matrisindexet. Den här operatorn är användbar när du behöver extrahera ett visst element från en matris i dina dokument.
Syntax
{ "$arrayElemAt": [ "<array>", "<idx>" ] }
Parametrar
beskrivning | |
---|---|
<array> |
Matrisreferensen som elementet hämtas från. |
<idx> |
Indexet för det element som ska returneras. Indexet är nollbaserat. Ett negativt index räknas från slutet av matrisen. |
Exempel
Nu ska vi förstå användningen med exempel-json från stores
datauppsättningen.
{
"_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 Cables", "totalSales": 1000},
{"categoryName": "DJ Headphones", "totalSales": 35921}
],
"fullSales": 3700
},
"promotionEvents": [
{
"eventName": "Cyber Monday Event",
"promotionalDates": {
"startDate": {"Year": 2024, "Month": 8, "Day": 1},
"endDate": {"Year": 2024, "Month": 8, "Day": 7}
},
"discounts": [{"categoryName": "DJ Speakers", "discountPercentage": 25}]
},
{
"eventName": "Black Friday Event",
"promotionalDates": {
"startDate": {"Year": 2024, "Month": 8, "Day": 1},
"endDate": {"Year": 2024, "Month": 8, "Day": 7}
},
"discounts": [{"categoryName": "DJ Speakers", "discountPercentage": 25}]
},
{
"eventName": "Mega Discount Days",
"promotionalDates": {
"startDate": {"Year": 2024, "Month": 5, "Day": 11},
"endDate": {"Year": 2024, "Month": 5, "Day": 18}
},
"discounts": [{"categoryName": "DJ Lights", "discountPercentage": 20}]
}
],
"tag": [
"#ShopLocal", "#NewArrival", "#FashionStore", "#SeasonalSale", "#FreeShipping", "#MembershipDeals"
]
}
Exempel 1: Returnera det första elementet från ett matrisfält
Exemplet hämtar den första händelseinformationen från promotionEvents
matrisen för det sökta arkivet.
db.stores.aggregate([
{ $match: { name: "Lakeshore Retail | DJ Equipment Stop - Port Cecile" } },
{
$project: {
firstPromotionEvent: { $arrayElemAt: ["$promotionEvents", 0] }
}
}
])
Frågan returnerar den första kampanjhändelsen json för det efterfrågade arkivet.
{
"_id": "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5",
"firstPromotionEvent": {
"eventName": "Cyber Monday Event",
"promotionalDates": {
"startDate": { "Year": 2024, "Month": 8, "Day": 1 },
"endDate": { "Year": 2024, "Month": 8, "Day": 7 }
},
"discounts": [
{ "categoryName": "DJ Speakers", "discountPercentage": 25 }
]
}
}
Relaterat innehåll
- Granska alternativ för migrering från MongoDB till Azure Cosmos DB för MongoDB (virtuell kärna)
- Läs mer om funktionskompatibilitet med MongoDB