Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El $shift operador es un operador de ventana que se usa en canalizaciones de agregación para desplazar valores dentro de una partición y devolver el valor desplazado. Resulta útil para las operaciones en las que es necesario comparar valores de documentos adyacentes en una partición ordenada.
Syntax
{
$shift: {
output: <expression>,
by: <number>,
default: <expression>
}
}
Parámetros
| Parámetro | Description |
|---|---|
output |
Especifica el campo o expresión cuyo valor se desplazará. |
by |
Especifica el número de posiciones para desplazar el valor. Los valores positivos se desplazan hacia delante, mientras que los valores negativos se desplazan hacia atrás. |
default |
Especifica el valor predeterminado que se va a mostrar si la operación de desplazamiento se sale de los límites. |
Ejemplos
Ejemplo 1: Cambio de datos de ventas
En este ejemplo se muestra cómo usar $shift para calcular el valor de ventas anterior para cada documento en una partición ordenada de datos de ventas.
db.collection.aggregate([
{
$setWindowFields: {
partitionBy: "$sales.salesByCategory.categoryName",
sortBy: { "sales.salesByCategory.totalSales": 1 },
output: {
previousSales: {
$shift: {
output: "$sales.salesByCategory.totalSales",
by: -1,
default: null
}
}
}
}
}
])
Ejemplo 2: Cambio de fechas de eventos promocionales
En este ejemplo se calcula la fecha de inicio del evento promocional anterior ordenando todos los eventos por startDate. Puesto que queremos tratar todos los eventos juntos, no particionamos.
db.promotionEvents.aggregate([
{
$setWindowFields: {
partitionBy: null,
sortBy: { "promotionalDates.startDate": 1 },
output: {
previousStartDate: {
$shift: {
output: "$promotionalDates.startDate",
by: -1,
default: null
}
}
}
}
}
])