Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’opérateur $shift est un opérateur de fenêtre utilisé dans les pipelines d’agrégation pour déplacer des valeurs dans une partition et retourner la valeur décalée. Il est utile pour les opérations où vous devez comparer des valeurs à partir de documents adjacents dans une partition triée.
Syntaxe
{
$shift: {
output: <expression>,
by: <number>,
default: <expression>
}
}
Paramètres
| Paramètre | Descriptif |
|---|---|
output |
Spécifie le champ ou l’expression dont la valeur sera décalée. |
by |
Spécifie le nombre de positions pour décaler la valeur. Les valeurs positives se déplacent vers l’avant, tandis que les valeurs négatives se déplacent vers l’arrière. |
default |
Spécifie la valeur par défaut à retourner si l’opération de décalage dépasse les limites. |
Exemple(s)
Exemple 1 : Déplacement des données de ventes
Cet exemple montre comment calculer $shift la valeur de vente précédente pour chaque document dans une partition triée de données de vente.
db.collection.aggregate([
{
$setWindowFields: {
partitionBy: "$sales.salesByCategory.categoryName",
sortBy: { "sales.salesByCategory.totalSales": 1 },
output: {
previousSales: {
$shift: {
output: "$sales.salesByCategory.totalSales",
by: -1,
default: null
}
}
}
}
}
])
Exemple 2 : Déplacement des dates d’événements promotionnels
Cet exemple calcule la date de début de l’événement promotionnel précédent en triant tous les événements par startDate. Comme nous voulons traiter tous les événements ensemble, nous ne partitions pas.
db.promotionEvents.aggregate([
{
$setWindowFields: {
partitionBy: null,
sortBy: { "promotionalDates.startDate": 1 },
output: {
previousStartDate: {
$shift: {
output: "$promotionalDates.startDate",
by: -1,
default: null
}
}
}
}
}
])