Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

MongoDB update() 함수에서 값 증가시키는 방법 – $inc 연산자 완벽 가이드

MongoDB에서 $inc 연산자로 필드 값 증가하기

MongoDB의 update() 함수 내에서 특정 숫자 필드의 값을 증가시키려면 $inc 연산자를 사용하면 됩니다. $inc는 지정한 만큼 값을 더하거나(양수), 빼거나(음수) 할 수 있는 아주 유용한 업데이트 연산자입니다.

이번 글에서는 실제 예제를 통해 컬렉션 생성부터 $inc 연산자를 활용한 값 증가까지 단계별로 살펴보겠습니다.

1단계: 테스트용 컬렉션 생성

먼저 insertOne() 메서드를 사용해 플레이어 정보가 담긴 문서 3개를 생성합니다.

> db.addInUpdateFunctionDemo.insertOne({"PlayerName":"Chris","PlayerScore":78});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd2b3f4345990cee87fd893")
}
> db.addInUpdateFunctionDemo.insertOne({"PlayerName":"Robert","PlayerScore":88});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd2b3fc345990cee87fd894")
}
> db.addInUpdateFunctionDemo.insertOne({"PlayerName":"David","PlayerScore":99});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd2b407345990cee87fd895")
}

2단계: 저장된 문서 확인

find() 메서드에 pretty()를 함께 사용하면 컬렉션의 모든 문서를 보기 좋게 출력할 수 있습니다.

> db.addInUpdateFunctionDemo.find().pretty();

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

{
   "_id" : ObjectId("5cd2b3f4345990cee87fd893"),
   "PlayerName" : "Chris",
   "PlayerScore" : 78
}
{
   "_id" : ObjectId("5cd2b3fc345990cee87fd894"),
   "PlayerName" : "Robert",
   "PlayerScore" : 88
}
{
   "_id" : ObjectId("5cd2b407345990cee87fd895"),
   "PlayerName" : "David",
   "PlayerScore" : 99
}

3단계: update() 함수와 $inc 연산자로 값 증가

이제 update() 함수 안에서 $inc 연산자를 사용해 David의 PlayerScore 값을 201만큼 증가시켜 보겠습니다.

> db.addInUpdateFunctionDemo.update({_id : ObjectId("5cd2b407345990cee87fd895")},{$inc: {PlayerScore: 201}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

실행 결과 nModified : 1이 반환되었으므로, 하나의 문서가 성공적으로 수정되었다는 것을 알 수 있습니다.

4단계: 업데이트 결과 확인

다시 한번 전체 문서를 조회하여 변경 사항을 확인합니다.

> db.addInUpdateFunctionDemo.find().pretty();

출력 결과를 보면 David의 점수가 99에서 300으로 정확히 201만큼 증가한 것을 확인할 수 있습니다.

{
   "_id" : ObjectId("5cd2b3f4345990cee87fd893"),
   "PlayerName" : "Chris",
   "PlayerScore" : 78
}
{
   "_id" : ObjectId("5cd2b3fc345990cee87fd894"),
   "PlayerName" : "Robert",
   "PlayerScore" : 88
}
{
   "_id" : ObjectId("5cd2b407345990cee87fd895"),
   "PlayerName" : "David",
   "PlayerScore" : 300
}

$inc 연산자 사용 시 참고 사항

  • 음수 값 사용: $inc에 음수를 지정하면 값을 감소시킬 수 있습니다. 예: {$inc: {PlayerScore: -10}}
  • 필드가 없는 경우: 업데이트 대상 문서에 해당 필드가 존재하지 않으면, 지정한 값으로 새 필드가 자동 생성됩니다.
  • 숫자 타입 전용: $inc는 숫자 타입 필드에만 사용할 수 있으며, 문자열 등 다른 타입에는 적용할 수 없습니다.
  • 원자적 연산: $inc는 원자적으로 동작하므로 동시성 환경에서도 안전하게 카운터나 점수를 갱신할 수 있습니다.

이처럼 MongoDB에서는 update() 함수와 $inc 연산자를 조합하면 별도의 읽기-수정-쓰기 과정 없이 간단하고 효율적으로 숫자 필드의 값을 증가 또는 감소시킬 수 있습니다.