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

MongoDB에서 aggregate()와 $sum으로 합계 계산하는 방법

MongoDB에서 특정 필드의 합계를 구하려면 aggregate() 함수와 함께 $sum 연산자를 사용하면 됩니다. 이 글에서는 예제를 통해 단계별로 합계를 계산하는 방법을 살펴보겠습니다.

1단계: 컬렉션 생성 및 문서 삽입하기

먼저 insertOne() 메서드를 사용해 demo337이라는 컬렉션에 여러 개의 문서를 생성합니다.

> db.demo337.insertOne({"Amount":100});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e5231e5f8647eb59e56209b")
}
> db.demo337.insertOne({"Amount":500});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e5231e9f8647eb59e56209c")
}
> db.demo337.insertOne({"Amount":400});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e5231ebf8647eb59e56209d")
}

2단계: find()로 저장된 문서 확인하기

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

> db.demo337.find();

위 명령을 실행하면 다음과 같은 출력 결과가 나타납니다.

{ "_id" : ObjectId("5e5231e5f8647eb59e56209b"), "Amount" : 100 }
{ "_id" : ObjectId("5e5231e9f8647eb59e56209c"), "Amount" : 500 }
{ "_id" : ObjectId("5e5231ebf8647eb59e56209d"), "Amount" : 400 }

3단계: aggregate()와 $sum으로 합계 계산하기

이제 aggregate() 파이프라인 안에서 $group 스테이지를 활용해 Amount 필드의 전체 합계를 계산해 보겠습니다.

> db.demo337.aggregate(
...    [
...       {
...          $group:
...          {
...             _id:null,
...             totalAmount: { $sum:"$Amount" }
...          }
...       }
...    ]
... );

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

{ "_id" : null, "totalAmount" : 1000 }

쿼리 동작 원리 설명

이 쿼리가 동작하는 방식은 다음과 같습니다.

$group: 집계 파이프라인에서 문서들을 그룹화하는 스테이지입니다.
_id: null: 그룹화 기준을 null로 지정하면 컬렉션의 모든 문서가 하나의 그룹으로 묶입니다. 만약 특정 필드 기준으로 그룹별 합계를 구하고 싶다면 해당 필드를 지정하면 됩니다.
$sum:"$Amount": 각 그룹에 속한 문서들의 Amount 필드 값을 모두 더합니다.

결과적으로 세 문서의 Amount 값(100 + 500 + 400)이 모두 더해져 totalAmount가 1000으로 출력되는 것을 확인할 수 있습니다.