다음을 통해 공유


$subtract(산술 식 연산자)

$subtract 산자는 두 숫자를 빼고 결과를 반환하는 데 사용됩니다. 이 연산자는 문서의 날짜, 시간 또는 숫자 값 간의 차이를 계산하는 등 다양한 시나리오에서 유용합니다.

구문

{ $subtract: [ <expression1>, <expression2> ] }

매개 변수

매개 변수 설명
<expression1> minuend(다른 숫자를 뺄 수 있는 숫자)입니다.
<expression2> subtrahend(뺄 수)입니다.

예시

예제 1: 전체 판매에서 총 판매액 빼기

다음 예제에서는 배열의 fullSales 값에서 값을 salesByCategory 빼는 totalSales 방법을 보여 줍니다.

db.collection.aggregate([
  {
    $project: {
      category: "$sales.salesByCategory.categoryName",
      salesDifference: { $subtract: ["$sales.salesByCategory.totalSales", "$sales.fullSales"] }
    }
  }
])

이 출력은 각 범주에 대한 totalSales와 fullSales의 차이를 보여 줍니다.

[
  { "_id": 1, "category": "Electronics", "salesDifference": 500 },
  { "_id": 2, "category": "Clothing", "salesDifference": -200 },
  { "_id": 3, "category": "Home Appliances", "salesDifference": 1000 }
]

예제 2: 프로모션 이벤트 기간 계산

다음 예제에서는 에서 빼서 프로모션 이벤트 기간(일)을 startDateendDate계산합니다.

db.collection.aggregate([
  {
    $project: {
      eventName: "$promotionEvents.eventName",
      eventDuration: {
        $subtract: [
          { $dateFromParts: { year: "$promotionEvents.promotionalDates.endDate.Year", month: "$promotionEvents.promotionalDates.endDate.Month", day: "$promotionEvents.promotionalDates.endDate.Day" } },
          { $dateFromParts: { year: "$promotionEvents.promotionalDates.startDate.Year", month: "$promotionEvents.promotionalDates.startDate.Month", day: "$promotionEvents.promotionalDates.startDate.Day" } }
        ]
      }
    }
  }
])

이 출력은 각 프로모션 이벤트의 시작 날짜와 종료 날짜 사이의 일 수를 계산합니다.

[
  {
    "_id": 4,
    "eventName": "Black Friday",
    "eventDuration": 5
  },
  {
    "_id": 5,
    "eventName": "Holiday Sale",
    "eventDuration": 10
  }
]