Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De $shift operator is een vensteroperator die wordt gebruikt in aggregatiepijplijnen om waarden binnen een partitie te verplaatsen en de verplaatste waarde te retourneren. Het is handig voor bewerkingen waarbij u waarden uit aangrenzende documenten in een gesorteerde partitie moet vergelijken.
Syntaxis
{
$shift: {
output: <expression>,
by: <number>,
default: <expression>
}
}
Parameterwaarden
| Kenmerk | Description |
|---|---|
output |
Hiermee geeft u het veld of de expressie waarvan de waarde wordt verschoven. |
by |
Hiermee geeft u het aantal posities om de waarde te verschuiven. Positieve waarden verschuiven vooruit, terwijl negatieve waarden achteruit verschuiven. |
default |
Hiermee specificeert u de standaardwaarde die wordt geretourneerd als de verschuivingsbewerking buiten de grenzen valt. |
Voorbeeld(en)
Voorbeeld 1: Verkoopgegevens verschuiven
In dit voorbeeld ziet u hoe $shift u de vorige verkoopwaarde voor elk document in een gesorteerde partitie met verkoopgegevens kunt berekenen.
db.collection.aggregate([
{
$setWindowFields: {
partitionBy: "$sales.salesByCategory.categoryName",
sortBy: { "sales.salesByCategory.totalSales": 1 },
output: {
previousSales: {
$shift: {
output: "$sales.salesByCategory.totalSales",
by: -1,
default: null
}
}
}
}
}
])
Voorbeeld 2: Datums van promotieevenementen verschuiven
In dit voorbeeld wordt de begindatum van de vorige promotie-gebeurtenis berekend door alle gebeurtenissen te sorteren op startDate. Omdat we alle gebeurtenissen samen willen behandelen, partitioneren we niet.
db.promotionEvents.aggregate([
{
$setWindowFields: {
partitionBy: null,
sortBy: { "promotionalDates.startDate": 1 },
output: {
previousStartDate: {
$shift: {
output: "$promotionalDates.startDate",
by: -1,
default: null
}
}
}
}
}
])