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

MongoDB에서 $group으로 그룹화하고 문서의 가격 합계 구하기

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로, 네 개 문서의 가격 합계가 정상적으로 출력된 것을 확인할 수 있습니다.