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 $slice
används för att begränsa antalet element i en matris som returneras i en fråga. Det kan vara användbart när du hanterar stora matriser där endast en delmängd av elementen behövs. Den här operatorn kan tillämpas på matriser för att antingen returnera de första N-elementen, de sista N-elementen eller ett visst område med element.
Syntax
Den allmänna syntaxen för operatorn $slice
är följande:
{
"$push": {
"<field>": {
"$each": [ "<value1>", "<value2>" ],
"$slice": <num>
}
}
}
Parametrar
beskrivning | |
---|---|
field |
Matrisfältet som operatorn $slice tillämpas på. |
<value1>, <value2> |
De värden som ska infogas i matrisen. Vi kan behålla en tom matris för att dela upp befintliga värden i matrisfältet. |
<num> |
Ett värde på noll rensar matrisen, ett negativt värde behåller att många element från slutet av matrisen och ett positivt värde behåller så många element från början av matrisen. |
Exempel
Nu ska vi granska användningen med ett json-exempeldokument från stores
samlingen.
{
"_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 },
{ "categoryName": "DJ Cables", "totalSales": 1000 }
],
"fullSales": 3700
},
"promotionEvents": [
{
"eventName": "Discount Delight Days",
"promotionalDates": {
"startDate": { "Year": 2024, "Month": 5, "Day": 11 },
"endDate": { "Year": 2024, "Month": 5, "Day": 18 }
}
},
{
"eventName": "New Promotion Event",
"promotionalDates": {
"startDate": { "Year": 2024, "Month": 7, "Day": 1 },
"endDate": { "Year": 2024, "Month": 7, "Day": 7 }
},
"discounts": [
{ "categoryName": "DJ Lights", "discountPercentage": 20 }
]
},
{
"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 } ]
}
],
"tag": [
"#ShopLocal",
"#NewArrival",
"#FashionStore",
"#SeasonalSale",
"#FreeShipping",
"#MembershipDeals"
]
}
Exempel 1: Segment för de första N- eller sista N-elementen från ett matrisfält
Exemplet använder $push
med $each
för att lägga till nya element i matrisen promotionEvents
och $slice
för att behålla endast det första N-elementet (positivt segment) eller de sista N-elementen (negativt segment). På så sätt ser du till att matrisen behåller de senaste posterna efter uppdateringen.
db.stores.updateOne(
{ _id: '7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5' },
{
$push: {
promotionEvents: {
$each: [
{
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 }
]
}
],
$slice: -3
}
}
}
)
Frågan lägger till Black Friday Event
och Mega Discount Days
händelsen i matrisen promotionEvents
och segmenten för de tre sista elementen i matrisen.
{
"_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 },
{ "categoryName": "DJ Cables", "totalSales": 1000 }
],
"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"
]
}
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