$inc

$inc 연산자는 필드 값을 지정된 양만큼 증분합니다. 필드가 없 $inc 으면 필드를 만들고 지정된 값으로 설정합니다. 연산자는 각각 증가 및 감소에 대해 양수 및 음수 값을 허용합니다.

문법

연산자의 $objectToArray 구문은 다음과 같습니다.

{
  $inc: {
    <field1>: <amount1>,
    <field2>: <amount2>,
    ...
  }
}

매개 변수

매개 변수 Description
field 증분할 필드의 이름입니다.
amount 증분 값입니다. 숫자여야 합니다(증분의 경우 양수, 감소의 경우 음수).

예시

스토어 컬렉션에서 이 샘플 문서를 고려합니다.

{
  "_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74",
  "name": "Proseware, Inc. | Home Entertainment Hub - East Linwoodbury",
  "staff": {
    "totalStaff": {
      "fullTime": 19,
      "partTime": 20
    }
  },
  "sales": {
    "totalSales": 151864,
    "salesByCategory": [
      {
        "categoryName": "Sound Bars",
        "totalSales": 2120
      },
      {
        "categoryName": "Home Theater Projectors",
        "totalSales": 45004
      }
    ]
  }
}

예제 1: 직원 수 증가

정규직 직원 수를 3으로 늘리려면 fullTime 교직원 필드에서 값이 3인 $inc 연산자를 사용합니다.

db.stores.updateOne(
  { "_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74" },
  {
    $inc: {
      "staff.totalStaff.fullTime": 3
    }
  }
)

예제 2: 값 감소 및 증가

파트타임 직원을 2씩 줄이고 총 매출을 5,000씩 늘리려면 두 필드의 $inc 연산자를 각각 -2 및 5000 값으로 사용합니다.

db.stores.updateOne(
  { "_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74" },
  {
    $inc: {
      "staff.totalStaff.partTime": -2,
      "sales.totalSales": 5000
    }
  }
)

예제 3: 새 필드 만들기

필드가 없 $inc 으면 지정된 값으로 필드를 만듭니다.

db.stores.updateOne(
  { "_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74" },
  {
    $inc: {
      "staff.contractorCount": 5,
      "sales.monthlyTarget": 200000
    }
  }
)

예제 4: 배열 요소 값 증가

위치 연산자를 사용하여 salesByCategory 배열 내의 특정 판매 수치를 업데이트합니다.

db.stores.updateOne(
  { 
    "_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74",
    "sales.salesByCategory.categoryName": "Sound Bars"
  },
  {
    $inc: {
      "sales.salesByCategory.$.totalSales": 500
    }
  }
)

이러한 작업 후에 문서는 다음과 같이 업데이트됩니다.

{
  "_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74",
  "name": "Proseware, Inc. | Home Entertainment Hub - East Linwoodbury",
  "staff": {
    "totalStaff": {
      "fullTime": 22,
      "partTime": 18
    },
    "contractorCount": 5
  },
  "sales": {
    "totalSales": 156864,
    "monthlyTarget": 200000,
    "salesByCategory": [
      {
        "categoryName": "Sound Bars",
        "totalSales": 2620
      },
      {
        "categoryName": "Home Theater Projectors",
        "totalSales": 45004
      }
    ]
  }
}