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

MongoDB에서 특정 필드 값의 합계 구하기 – $sum 집계 연산자 활용법

MongoDB에서 컬렉션 내 문서들의 특정 필드 값을 모두 더해 합계를 구하고 싶다면 집계 파이프라인(Aggregation Pipeline)$group$sum 연산자를 활용하면 됩니다. 이 글에서는 실제 예제를 통해 그 과정을 단계별로 살펴보겠습니다.

1. 샘플 컬렉션 생성

먼저 예제로 사용할 컬렉션에 문서를 삽입합니다. insertOne() 메서드를 사용하여 여러 개의 문서를 순차적으로 추가합니다.

> db.demo677.insertOne({Value:10});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5ea421f404263e90dac943f8")
}
> db.demo677.insertOne({Value:50});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5ea421f704263e90dac943f9")
}
> db.demo677.insertOne({Value:20});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5ea421fa04263e90dac943fa")
}
> db.demo677.insertOne({Value:20});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5ea421fe04263e90dac943fb")
}

2. 저장된 문서 확인하기

find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 조회할 수 있습니다.

> db.demo677.find();

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

{ "_id" : ObjectId("5ea421f404263e90dac943f8"), "Value" : 10 }
{ "_id" : ObjectId("5ea421f704263e90dac943f9"), "Value" : 50 }
{ "_id" : ObjectId("5ea421fa04263e90dac943fa"), "Value" : 20 }
{ "_id" : ObjectId("5ea421fe04263e90dac943fb"), "Value" : 20 }

3. $group과 $sum으로 합계 계산하기

특정 필드(Value)의 전체 합계를 구하려면 aggregate() 메서드 안에서 $group 단계를 사용합니다. 이때 _idnull로 지정하면 모든 문서를 하나의 그룹으로 묶어 처리할 수 있고, $sum 연산자에 필드명 앞에 $를 붙여 전달하면 해당 필드 값들이 모두 더해집니다.

> db.demo677.aggregate({ $group: { _id : null, sum : { $sum: "$Value" } } });

실행 결과는 다음과 같습니다.

{ "_id" : null, "sum" : 100 }

결과 해석

출력 결과를 보면 sum 필드에 100이라는 값이 반환되었습니다. 이는 문서들의 Value 값(10 + 50 + 20 + 20)을 모두 더한 합계입니다.

핵심 포인트 정리

  • $group: 문서들을 지정한 기준으로 묶는 집계 단계입니다. _id: null로 설정하면 전체 문서가 하나의 그룹이 됩니다.
  • $sum: 그룹 내 필드 값의 합계를 계산하는 누적 연산자(accumulator)입니다.
  • 필드 이름을 참조할 때는 반드시 $Value처럼 앞에 달러 기호($)를 붙여야 합니다.

이 방식은 조건별 그룹 합계, 평균, 최댓값 등 다양한 통계 계산으로 확장할 수 있으므로, MongoDB 데이터 분석의 기본기로 꼭 익혀두면 유용합니다.