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

MongoDB Aggregate로 문서 정렬하는 방법 – $sort 스테이지 완벽 가이드

MongoDB에서 aggregate() 메서드를 사용해 데이터를 정렬하려면 애그리게이션 파이프라인 안에 $sort 스테이지를 추가하면 됩니다. $sort는 지정한 필드 값을 기준으로 문서를 정렬하며, 필드 값에 1을 설정하면 오름차순, -1을 설정하면 내림차순으로 정렬됩니다.

그럼 실제 예제를 통해 단계별로 살펴보겠습니다.

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

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

> db.demo164.insertOne({"StudentAge":24});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e36883d9e4f06af551997c8")
}
> db.demo164.insertOne({"StudentAge":25});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3688409e4f06af551997c9")
}
> db.demo164.insertOne({"StudentAge":22});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3688429e4f06af551997ca")
}
> db.demo164.insertOne({"StudentAge":21});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3688439e4f06af551997cb")
}

2단계: find() 메서드로 전체 문서 확인

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

> db.demo164.find();

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

{ "_id" : ObjectId("5e36883d9e4f06af551997c8"), "StudentAge" : 24 }
{ "_id" : ObjectId("5e3688409e4f06af551997c9"), "StudentAge" : 25 }
{ "_id" : ObjectId("5e3688429e4f06af551997ca"), "StudentAge" : 22 }
{ "_id" : ObjectId("5e3688439e4f06af551997cb"), "StudentAge" : 21 }

3단계: aggregate()와 $sort로 정렬하기

이제 aggregate() 메서드에 $sort 스테이지를 적용해 보겠습니다. 아래 쿼리는 StudentAge 필드를 기준으로 내림차순(-1) 정렬을 수행합니다.

> db.demo164.aggregate([{ $sort : { StudentAge : -1 } }]);

실행 결과 나이가 높은 순서대로 문서가 정렬되어 출력되는 것을 확인할 수 있습니다.

{ "_id" : ObjectId("5e3688409e4f06af551997c9"), "StudentAge" : 25 }
{ "_id" : ObjectId("5e36883d9e4f06af551997c8"), "StudentAge" : 24 }
{ "_id" : ObjectId("5e3688429e4f06af551997ca"), "StudentAge" : 22 }
{ "_id" : ObjectId("5e3688439e4f06af551997cb"), "StudentAge" : 21 }

정리

$sort 스테이지는 애그리게이션 파이프라인에서 어느 위치에든 배치할 수 있으며, 여러 필드를 동시에 정렬 조건으로 지정할 수도 있습니다. 예를 들어 { $sort : { age : 1, name : 1 } }처럼 작성하면 먼저 나이 오름차순으로 정렬한 뒤, 같은 나이일 경우 이름 순으로 정렬됩니다. 또한 인덱스가 존재하는 필드에 $sort를 사용하면 성능을 크게 향상시킬 수 있으므로, 대량의 데이터를 다룰 때는 인덱스 활용을 고려하는 것이 좋습니다.