MongoDB에서 문서를 내림차순으로 정렬하려면 find() 메서드와 함께 sort() 메서드를 사용하면 됩니다. sort()에 필드 이름과 함께 -1을 지정하면 해당 필드를 기준으로 내림차순(큰 값부터 작은 값 순) 정렬이 수행됩니다.
1. 컬렉션 생성 및 문서 삽입
먼저 예제로 사용할 컬렉션을 만들고 문서를 삽입해 보겠습니다.
> db.demo630.insertOne({"Value":10});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e9b080e6c954c74be91e6ba")
}
> db.demo630.insertOne({"Value":200});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e9b08116c954c74be91e6bb")
}
> db.demo630.insertOne({"Value":40});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e9b08146c954c74be91e6bc")
}
> db.demo630.insertOne({"Value":60});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e9b08176c954c74be91e6bd")
}2. 전체 문서 조회하기
find() 메서드를 사용하여 컬렉션의 모든 문서를 출력합니다.
> db.demo630.find();
위 쿼리는 다음과 같은 결과를 출력합니다.
{ "_id" : ObjectId("5e9b080e6c954c74be91e6ba"), "Value" : 10 }
{ "_id" : ObjectId("5e9b08116c954c74be91e6bb"), "Value" : 200 }
{ "_id" : ObjectId("5e9b08146c954c74be91e6bc"), "Value" : 40 }
{ "_id" : ObjectId("5e9b08176c954c74be91e6bd"), "Value" : 60 }3. sort()로 내림차순 정렬하기
이제 sort() 메서드를 사용하여 Value 필드를 기준으로 내림차순 정렬하는 쿼리를 실행해 보겠습니다.
> db.demo630.find().sort({Value:-1});실행 결과는 다음과 같습니다.
{ "_id" : ObjectId("5e9b08116c954c74be91e6bb"), "Value" : 200 }
{ "_id" : ObjectId("5e9b08176c954c74be91e6bd"), "Value" : 60 }
{ "_id" : ObjectId("5e9b08146c954c74be91e6bc"), "Value" : 40 }
{ "_id" : ObjectId("5e9b080e6c954c74be91e6ba"), "Value" : 10 }출력 결과를 보면 Value 값이 200 → 60 → 40 → 10 순서로, 즉 큰 값부터 작은 값 순으로 정렬된 것을 확인할 수 있습니다.
정리
sort({필드명: -1}): 해당 필드를 기준으로 내림차순 정렬sort({필드명: 1}): 해당 필드를 기준으로 오름차순 정렬
참고로 실무 환경에서는 대량의 데이터를 자주 정렬하는 경우 인덱스를 활용하는 것이 성능 면에서 유리합니다. 정렬에 사용되는 필드에 인덱스를 생성해 두면 MongoDB가 메모리 내 정렬(in-memory sort) 없이 빠르게 결과를 반환할 수 있습니다.