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

MongoDB에서 특정 필드의 평균 계산하기 – aggregate()와 $avg 연산자 활용법

MongoDB에서 특정 필드의 평균값을 구하려면 aggregate() 메서드와 $avg 연산자를 함께 사용하면 됩니다. 이 글에서는 실제 예제를 통해 컬렉션 생성부터 평균 계산까지 단계별로 살펴보겠습니다.

1. 컬렉션 생성 및 문서 삽입

먼저 insertOne() 메서드를 사용해 데모용 컬렉션에 학생별 점수 데이터를 삽입합니다.

> db.demo214.insertOne({"Marks":56,"Name":"David"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e3e319403d395bdc2134705")
}
> db.demo214.insertOne({"Marks":86,"Name":"Bob"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e3e319c03d395bdc2134706")
}
> db.demo214.insertOne({"Marks":78,"Name":"Carol"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e3e31a403d395bdc2134707")
}

2. 전체 문서 조회하기

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

> db.demo214.find();

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

{ "_id" : ObjectId("5e3e319403d395bdc2134705"), "Marks" : 56, "Name" : "David" }
{ "_id" : ObjectId("5e3e319c03d395bdc2134706"), "Marks" : 86, "Name" : "Bob" }
{ "_id" : ObjectId("5e3e31a403d395bdc2134707"), "Marks" : 78, "Name" : "Carol" }

3. $avg 연산자로 평균 계산하기

이제 집계 파이프라인(aggregation pipeline)에서 $group 스테이지와 $avg 연산자를 조합하여 Marks 필드의 평균값을 계산합니다.

> db.demo214.aggregate(
...   [
...      {
...        $group:
...        {
...           "_id":"_id",
...           AverageValue: { $avg: "$Marks" }
...        }
...      }
...   ]
...)

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

{ "_id" : "_id", "AverageValue" : 73.33333333333333 }

쿼리 설명

  • $group: 문서들을 하나의 그룹으로 묶는 스테이지입니다. 여기서는 _id를 기준으로 전체 문서를 하나의 그룹으로 처리했습니다.
  • $avg: 지정한 필드(여기서는 $Marks)의 산술 평균을 자동으로 계산해 줍니다.

세 문서의 점수는 각각 56, 86, 78이므로 평균은 (56 + 86 + 78) ÷ 3 = 약 73.33이 됩니다. 만약 특정 조건(예: 특정 이름의 학생만)에 해당하는 문서의 평균을 구하고 싶다면, $match 스테이지를 파이프라인 앞단에 추가하면 됩니다.