MongoDB에서 그룹 연산을 수행하고 문서의 가격(price) 값을 합산하려면 $group 연산자를 사용하며, 그 내부에서 실제 덧셈 처리는 $sum 연산자를 통해 이루어집니다.
이 글에서는 실제 예제를 통해 컬렉션 생성부터 가격 합계까지 전 과정을 단계별로 살펴보겠습니다.
1. 샘플 데이터 준비하기
먼저 insertOne() 메서드를 사용하여 컬렉션에 여러 개의 문서를 삽입합니다. 각 문서에는 서로 다른 가격 값이 포함되어 있습니다.
> db.demo527.insertOne({"Price":45.5});{
"acknowledged" : true,
"insertedId" : ObjectId("5e8aff2fef4dcbee04fbbbdc")
}
> db.demo527.insertOne({"Price":55.5});{
"acknowledged" : true,
"insertedId" : ObjectId("5e8aff34ef4dcbee04fbbbdd")
}
> db.demo527.insertOne({"Price":100.4});{
"acknowledged" : true,
"insertedId" : ObjectId("5e8aff39ef4dcbee04fbbbde")
}
> db.demo527.insertOne({"Price":200.6});{
"acknowledged" : true,
"insertedId" : ObjectId("5e8aff40ef4dcbee04fbbbdf")
}2. 저장된 문서 확인하기
find() 메서드를 사용하여 컬렉션에 저장된 모든 문서를 조회할 수 있습니다.
> db.demo527.find();
위 명령어를 실행하면 다음과 같은 결과가 출력됩니다.
{ "_id" : ObjectId("5e8aff2fef4dcbee04fbbbdc"), "Price" : 45.5 }
{ "_id" : ObjectId("5e8aff34ef4dcbee04fbbbdd"), "Price" : 55.5 }
{ "_id" : ObjectId("5e8aff39ef4dcbee04fbbbde"), "Price" : 100.4 }
{ "_id" : ObjectId("5e8aff40ef4dcbee04fbbbdf"), "Price" : 200.6 }3. $group과 $sum으로 가격 합계 구하기
이제 aggregate() 메서드와 함께 $group, $sum 연산자를 사용하여 모든 문서의 가격 합계를 계산하는 쿼리를 작성해 보겠습니다.
> db.demo527.aggregate([ { $group: { _id:null, totalPrice:{"$sum":"$Price"}} } ])쿼리 실행 결과는 다음과 같습니다.
{ "_id" : null, "totalPrice" : 402 }결과 해석
위 쿼리에서 각 요소가 하는 역할은 다음과 같습니다.
- _id: null — 그룹화 기준을 지정하지 않고 전체 문서를 하나의 그룹으로 묶습니다. 특정 필드(예: 카테고리)를 기준으로 그룹화하려면 해당 필드명을 지정하면 됩니다.
- totalPrice — 집계 결과를 담을 새로운 필드의 이름입니다.
- $sum: "$Price" — 각 문서의 Price 필드 값을 모두 더합니다.
실행 결과 45.5 + 55.5 + 100.4 + 200.6 = 402로, 네 개 문서의 가격 합계가 정상적으로 출력된 것을 확인할 수 있습니다.