Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'operatore $shift è un operatore window usato nelle pipeline di aggregazione per spostare i valori all'interno di una partizione e restituire il valore spostato. È utile per le operazioni in cui è necessario confrontare i valori dei documenti adiacenti in una partizione ordinata.
Sintassi
{
$shift: {
output: <expression>,
by: <number>,
default: <expression>
}
}
Parametri
| Parametro | Description |
|---|---|
output |
Specifica il campo o l'espressione il cui valore verrà spostato. |
by |
Specifica il numero di posizioni per spostare il valore. I valori positivi passano in avanti, mentre i valori negativi passano all'indietro. |
default |
Specifica il valore predefinito da restituire se l'operazione di spostamento esce dai limiti. |
Esempio(i)
Esempio 1: Spostamento dei dati di vendita
In questo esempio viene illustrato come usare $shift per calcolare il valore di vendita precedente per ogni documento in una partizione ordinata dei dati di vendita.
db.collection.aggregate([
{
$setWindowFields: {
partitionBy: "$sales.salesByCategory.categoryName",
sortBy: { "sales.salesByCategory.totalSales": 1 },
output: {
previousSales: {
$shift: {
output: "$sales.salesByCategory.totalSales",
by: -1,
default: null
}
}
}
}
}
])
Esempio 2: Spostamento delle date degli eventi promozionali
In questo esempio viene calcolata la data di inizio dell'evento promozionale precedente ordinando tutti gli eventi in base a startDate. Poiché si vogliono trattare tutti gli eventi insieme, non si esegue la partizione.
db.promotionEvents.aggregate([
{
$setWindowFields: {
partitionBy: null,
sortBy: { "promotionalDates.startDate": 1 },
output: {
previousStartDate: {
$shift: {
output: "$promotionalDates.startDate",
by: -1,
default: null
}
}
}
}
}
])