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

MongoDB에서 내림차순 정렬하는 방법 – sort() 메서드 완벽 정리

MongoDB에서 데이터를 조회할 때 결과를 원하는 순서대로 정렬하는 것은 매우 중요합니다. 이 글에서는 sort() 메서드를 사용해 컬렉션의 문서를 내림차순(큰 값 → 작은 값)으로 정렬하는 방법을 예제와 함께 자세히 알아보겠습니다.

MongoDB sort() 메서드의 기본 문법

MongoDB의 sort() 메서드는 필드 이름과 정렬 방향을 객체 형태로 전달받습니다.

  • 오름차순 정렬: 필드 값에 1을 지정합니다.
  • 내림차순 정렬: 필드 값에 -1을 지정합니다.

오름차순 정렬의 기본 문법은 다음과 같습니다.

db.yourCollectionName.find().sort({yourField: 1});

내림차순으로 정렬하려면 값을 -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() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 확인할 수 있습니다. pretty()를 함께 사용하면 결과를 읽기 좋은 형태로 출력해 줍니다.

> 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 }

내림차순으로 정렬하는 쿼리

이제 핵심인 내림차순 정렬입니다. find() 뒤에 sort({Value: -1})을 붙이면 Value 필드 기준으로 큰 값부터 작은 값 순서대로 결과가 반환됩니다.

> db.sortingDemo.find().sort({Value:-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 }

290부터 시작해서 1까지, Value 값이 내림차순으로 깔끔하게 정렬된 것을 확인할 수 있습니다.

정리 및 추가 팁

  • sort({필드명: 1})은 오름차순, sort({필드명: -1})은 내림차순 정렬입니다.
  • 여러 필드를 조합한 복합 정렬도 가능합니다. 예: sort({A: -1, B: 1})
  • limit()과 함께 사용하면 상위 N개 문서만 가져올 수 있습니다. 예: 최고 점수 10개 조회 시 find().sort({score: -1}).limit(10)
  • 자주 정렬하는 필드에는 인덱스를 생성하면 대량의 데이터에서도 정렬 성능이 크게 향상됩니다.

MongoDB의 내림차순 정렬은 단 한 줄의 -1 설정만으로 손쉽게 적용할 수 있습니다. 실무에서는 limit(), 인덱스와 함께 활용하면 훨씬 더 효율적인 쿼리를 작성할 수 있습니다.