MongoDB에서 쿼리 결과를 정렬하려면 sort() 메서드를 사용합니다. 오름차순과 내림차순 두 가지 방식으로 정렬할 수 있으며, 각각의 문법은 다음과 같습니다.
정렬 기본 문법
1. 오름차순(Ascending) 정렬
필드 값에 1을 지정하면 오름차순으로 정렬됩니다.
db.yourCollectionName.find().sort({yourField:1});2. 내림차순(Descending) 정렬
필드 값에 -1을 지정하면 내림차순으로 정렬됩니다.
db.yourCollectionName.find().sort({yourField:-1});예제 컬렉션 생성하기
개념을 이해하기 위해 실제 문서가 담긴 컬렉션을 만들어 보겠습니다. 아래 쿼리로 sortingDemo 컬렉션에 여러 개의 문서를 삽입합니다.
> db.sortingDemo.insertOne({"Value":100});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8f8e2ed3c9d04998abf006")
}
> db.sortingDemo.insertOne({"Value":1});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8f8e31d3c9d04998abf007")
}
> db.sortingDemo.insertOne({"Value":150});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8f8e34d3c9d04998abf008")
}
> db.sortingDemo.insertOne({"Value":250});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8f8e37d3c9d04998abf009")
}
> db.sortingDemo.insertOne({"Value":5});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8f8e3bd3c9d04998abf00a")
}
> db.sortingDemo.insertOne({"Value":199});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8f8e3ed3c9d04998abf00b")
}
> db.sortingDemo.insertOne({"Value":243});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8f8e44d3c9d04998abf00c")
}
> db.sortingDemo.insertOne({"Value":290});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8f8e48d3c9d04998abf00d")
}저장된 전체 문서 확인하기
find() 메서드를 사용해 컬렉션의 모든 문서를 조회합니다.
> db.sortingDemo.find().pretty();
실행 결과는 다음과 같습니다. 문서들이 삽입된 순서대로 출력되는 것을 확인할 수 있습니다.
{ "_id" : ObjectId("5c8f8e2ed3c9d04998abf006"), "Value" : 100 }
{ "_id" : ObjectId("5c8f8e31d3c9d04998abf007"), "Value" : 1 }
{ "_id" : ObjectId("5c8f8e34d3c9d04998abf008"), "Value" : 150 }
{ "_id" : ObjectId("5c8f8e37d3c9d04998abf009"), "Value" : 250 }
{ "_id" : ObjectId("5c8f8e3bd3c9d04998abf00a"), "Value" : 5 }
{ "_id" : ObjectId("5c8f8e3ed3c9d04998abf00b"), "Value" : 199 }
{ "_id" : ObjectId("5c8f8e44d3c9d04998abf00c"), "Value" : 243 }
{ "_id" : ObjectId("5c8f8e48d3c9d04998abf00d"), "Value" : 290 }오름차순 정렬 예제
Value 필드를 기준으로 오름차순 정렬하려면 다음과 같이 쿼리를 작성합니다.
> db.sortingDemo.find().sort({Value:1});실행 결과, 값이 작은 것부터 큰 순서대로(1 → 290) 정렬되어 출력됩니다.
{ "_id" : ObjectId("5c8f8e31d3c9d04998abf007"), "Value" : 1 }
{ "_id" : ObjectId("5c8f8e3bd3c9d04998abf00a"), "Value" : 5 }
{ "_id" : ObjectId("5c8f8e2ed3c9d04998abf006"), "Value" : 100 }
{ "_id" : ObjectId("5c8f8e34d3c9d04998abf008"), "Value" : 150 }
{ "_id" : ObjectId("5c8f8e3ed3c9d04998abf00b"), "Value" : 199 }
{ "_id" : ObjectId("5c8f8e44d3c9d04998abf00c"), "Value" : 243 }
{ "_id" : ObjectId("5c8f8e37d3c9d04998abf009"), "Value" : 250 }
{ "_id" : ObjectId("5c8f8e48d3c9d04998abf00d"), "Value" : 290 }내림차순 정렬 예제
반대로 내림차순으로 정렬하려면 필드 값에 -1을 지정합니다.
> db.sortingDemo.find().sort({Value:-1});실행 결과, 값이 큰 것부터 작은 순서대로(290 → 1) 정렬되어 출력됩니다.
{ "_id" : ObjectId("5c8f8e48d3c9d04998abf00d"), "Value" : 290 }
{ "_id" : ObjectId("5c8f8e37d3c9d04998abf009"), "Value" : 250 }
{ "_id" : ObjectId("5c8f8e44d3c9d04998abf00c"), "Value" : 243 }
{ "_id" : ObjectId("5c8f8e3ed3c9d04998abf00b"), "Value" : 199 }
{ "_id" : ObjectId("5c8f8e34d3c9d04998abf008"), "Value" : 150 }
{ "_id" : ObjectId("5c8f8e2ed3c9d04998abf006"), "Value" : 100 }
{ "_id" : ObjectId("5c8f8e3bd3c9d04998abf00a"), "Value" : 5 }
{ "_id" : ObjectId("5c8f8e31d3c9d04998abf007"), "Value" : 1 }정리
MongoDB에서 정렬은 find() 메서드 뒤에 sort()를 연결하여 간단히 수행할 수 있습니다. 핵심은 필드 값 지정 방식입니다.
- {field: 1} → 오름차순 정렬 (작은 값부터)
- {field: -1} → 내림차순 정렬 (큰 값부터)
또한 여러 필드를 조합하여 정렬할 수도 있습니다. 예를 들어 sort({fieldA:1, fieldB:-1})처럼 작성하면 fieldA를 기준으로 먼저 오름차순 정렬한 뒤, 동일한 값 내에서 fieldB를 기준으로 내림차순 정렬합니다. 대용량 컬렉션에서 자주 사용하는 정렬 필드에는 인덱스를 생성하면 성능을 크게 향상시킬 수 있습니다.