$shift

$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
          }
        }
      }
    }
  }
])