내림차순으로 데이터를 정렬하려면 sort() 메서드에 -1을 지정하면 됩니다. 이 글에서는 컬렉션을 생성하고 문서를 삽입한 뒤, 내림차순 정렬을 통해 상위 레코드 한 개만 조회하는 방법을 단계별로 살펴보겠습니다.
1. 컬렉션 생성 및 문서 삽입
먼저 insertOne() 메서드를 사용해 demo267 컬렉션에 문서들을 차례로 추가합니다.
> db.demo267.insertOne({id:100,"Name":"Chris"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e4811951627c0c63e7dbaab")
}
> db.demo267.insertOne({id:100,"Name":"Adam"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e48119e1627c0c63e7dbaac")
}
> db.demo267.insertOne({id:100,"Name":"David"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e4811a51627c0c63e7dbaad")
}
> db.demo267.insertOne({id:100,"Name":"Bob"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e4811ab1627c0c63e7dbaae")
}2. 전체 문서 확인하기
find() 메서드에 pretty()를 함께 사용하면 컬렉션에 저장된 모든 문서를 보기 좋게 출력할 수 있습니다.
> db.demo267.find().pretty();
{
"_id" : ObjectId("5e4811951627c0c63e7dbaab"),
"id" : 100,
"Name" : "Chris"
}
{
"_id" : ObjectId("5e48119e1627c0c63e7dbaac"),
"id" : 100,
"Name" : "Adam"
}
{
"_id" : ObjectId("5e4811a51627c0c63e7dbaad"),
"id" : 100,
"Name" : "David"
}
{ "_id" : ObjectId("5e4811ab1627c0c63e7dbaae"), "id" : 100, "Name" : "Bob" }3. 내림차순 정렬 후 상위 1개 레코드만 선택
이제 Name 필드를 기준으로 내림차순(-1) 정렬을 적용하고, limit(1)을 사용해 정렬된 결과 중 가장 앞에 있는 레코드 한 개만 가져옵니다.
> db.demo267.find().sort({Name:-1}).limit(1);위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
{ "_id" : ObjectId("5e4811a51627c0c63e7dbaad"), "id" : 100, "Name" : "David" }핵심 정리
sort()에서 1은 오름차순, -1은 내림차순을 의미합니다. 여기에 limit(n)을 조합하면 정렬된 순서에서 상위 n개의 레코드만 손쉽게 선택할 수 있습니다. 이 방식은 최신 데이터 조회, 랭킹 상위 항목 추출 등 다양한 상황에서 유용하게 활용됩니다.