Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O $shift é um operador de janela usado em pipelines de agregação para deslocar valores dentro de uma partição e retornar o valor deslocado. É útil para operações em que você precisa comparar valores de documentos adjacentes em uma partição classificada.
Sintaxe
{
$shift: {
output: <expression>,
by: <number>,
default: <expression>
}
}
Parâmetros
| Parâmetro | Description |
|---|---|
output |
Especifica o campo ou a expressão cujo valor será deslocado. |
by |
Especifica o número de posições para deslocar o valor. Os valores positivos mudam para frente, enquanto os valores negativos mudam para trás. |
default |
Especifica o valor padrão a ser retornado se a operação de deslocamento sair dos limites. |
Exemplo(s)
Exemplo 1: Mudando dados de vendas
Este exemplo demonstra como usar $shift para calcular o valor de vendas anterior para cada documento em uma partição classificada de dados de vendas.
db.collection.aggregate([
{
$setWindowFields: {
partitionBy: "$sales.salesByCategory.categoryName",
sortBy: { "sales.salesByCategory.totalSales": 1 },
output: {
previousSales: {
$shift: {
output: "$sales.salesByCategory.totalSales",
by: -1,
default: null
}
}
}
}
}
])
Exemplo 2: Mudança de datas de evento promocionais
Este exemplo calcula a data de início do evento promocional anterior classificando todos os eventos por startDate. Como queremos tratar todos os eventos juntos, não particionamos.
db.promotionEvents.aggregate([
{
$setWindowFields: {
partitionBy: null,
sortBy: { "promotionalDates.startDate": 1 },
output: {
previousStartDate: {
$shift: {
output: "$promotionalDates.startDate",
by: -1,
default: null
}
}
}
}
}
])