Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az $shift operátor az aggregációs folyamatokban használt ablak operátor, amellyel a partíción belüli értékeket áthelyezi, és visszaadja az eltolt értéket. Olyan műveletek esetén hasznos, amelyekben egy rendezett partíció szomszédos dokumentumainak értékeit kell összehasonlítani.
Szemantika
{
$shift: {
output: <expression>,
by: <number>,
default: <expression>
}
}
Paraméterek
| Paraméter | Description |
|---|---|
output |
Azt a mezőt vagy kifejezést adja meg, amelynek az értéke el lesz tolva. |
by |
Megadja az érték eltolásához tartozó pozíciók számát. A pozitív értékek előre, míg a negatív értékek hátrafelé tolódnak. |
default |
Meghatározza az alapértelmezett értéket, amit visszaad, ha az eltolás művelet túllépi a határokat. |
Példa(ák)
1. példa: Értékesítési adatok áthelyezése
Ez a példa bemutatja, hogyan lehet $shift segítségével kiszámolni az előző értékesítési értéket az egyes dokumentumokhoz az értékesítési adatok rendezett partíciójában.
db.collection.aggregate([
{
$setWindowFields: {
partitionBy: "$sales.salesByCategory.categoryName",
sortBy: { "sales.salesByCategory.totalSales": 1 },
output: {
previousSales: {
$shift: {
output: "$sales.salesByCategory.totalSales",
by: -1,
default: null
}
}
}
}
}
])
2. példa: Promóciós események dátumának eltolása
Ez a példa az előző promóciós esemény kezdési dátumát számítja ki az összes eseményt a startDate szerint rendezve. Mivel az összes eseményt együtt szeretnénk kezelni, nem particionáljuk.
db.promotionEvents.aggregate([
{
$setWindowFields: {
partitionBy: null,
sortBy: { "promotionalDates.startDate": 1 },
output: {
previousStartDate: {
$shift: {
output: "$promotionalDates.startDate",
by: -1,
default: null
}
}
}
}
}
])