$shift 연산자는 집계 파이프라인에서 파티션 내에서 값을 이동하고 이동된 값을 반환하는 데 사용되는 창 연산자입니다. 정렬된 파티션에서 인접한 문서의 값을 비교해야 하는 작업에 유용합니다.
문법
{
$shift: {
output: <expression>,
by: <number>,
default: <expression>
}
}
매개 변수
| 매개 변수 | Description |
|---|---|
output |
값을 이동할 필드 또는 식을 지정합니다. |
by |
값을 이동할 위치 수를 지정합니다. 양수 값은 앞으로 이동하고 음수 값은 뒤로 이동합니다. |
default |
시프트 작업이 범위를 벗어나면 반환할 기본값을 지정합니다. |
예제(들)
예제 1: 판매 데이터 이동
이 예제에서는 정렬된 판매 데이터 파티션의 각 문서에 대한 이전 판매 값을 계산하는 방법을 $shift 보여 줍니다.
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: 프로모션 이벤트 날짜 이동
다음은 startDate를 기준으로 모든 이벤트를 정렬하여 이전 프로모션 이벤트의 시작 날짜를 계산하는 예제입니다. 모든 이벤트를 함께 처리하려고 하므로 분할하지 않습니다.
db.promotionEvents.aggregate([
{
$setWindowFields: {
partitionBy: null,
sortBy: { "promotionalDates.startDate": 1 },
output: {
previousStartDate: {
$shift: {
output: "$promotionalDates.startDate",
by: -1,
default: null
}
}
}
}
}
])