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

MongoDB에서 _id별로 그룹화하는 쿼리 작성 방법

MongoDB에서 _id별로 그룹화하기

MongoDB에서 문서를 _id 기준으로 그룹화하려면 애그리게이션 파이프라인의 $group 연산자를 사용합니다. $group은 지정한 키를 기준으로 문서들을 묶어주며, $sum 같은 누적 연산자와 함께 사용하면 그룹별 통계를 손쉽게 계산할 수 있습니다.

먼저 예제에 사용할 컬렉션을 생성하고 문서를 삽입해 보겠습니다.

1. 컬렉션 생성 및 데이터 삽입

insertOne() 메서드를 사용해 demo529 컬렉션에 여러 개의 문서를 추가합니다.

> db.demo529.insertOne({"Score":10});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e8b1d5bef4dcbee04fbbbe4")
}
> db.demo529.insertOne({"Score":20});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e8b1d5fef4dcbee04fbbbe5")
}
> db.demo529.insertOne({"Score":10});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e8b1d61ef4dcbee04fbbbe6")
}
> db.demo529.insertOne({"Score":10});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e8b1d62ef4dcbee04fbbbe7")
}

2. 전체 문서 조회

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

> db.demo529.find();

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

{ "_id" : ObjectId("5e8b1d5bef4dcbee04fbbbe4"), "Score" : 10 }
{ "_id" : ObjectId("5e8b1d5fef4dcbee04fbbbe5"), "Score" : 20 }
{ "_id" : ObjectId("5e8b1d61ef4dcbee04fbbbe6"), "Score" : 10 }
{ "_id" : ObjectId("5e8b1d62ef4dcbee04fbbbe7"), "Score" : 10 }

3. _id 기준 그룹화 쿼리 실행

다음은 $group을 사용하여 전체 문서를 하나의 그룹으로 묶고 문서 개수를 집계하는 쿼리입니다. _id: null로 지정하면 모든 문서가 단일 그룹으로 처리됩니다.

> db.demo529.aggregate( [
... {
...    $group: {
...       _id: null,
...       count: { $sum: 1 }
...    }
... }
... ] )

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

{ "_id" : null, "count" : 4 }

결과를 살펴보면 _idnull인 단일 그룹이 생성되었고, count 필드에 전체 문서 수인 4가 집계된 것을 확인할 수 있습니다. 참고로 특정 필드 값별로 그룹화하고 싶다면 _id: "$Score"처럼 필드명을 지정하면 되며, 이 경우 Score 값이 같은 문서끼리 각각 그룹으로 묶이게 됩니다.