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

MongoDB에서 최솟값 찾기: sort()와 limit() 활용 방법

MongoDB에서 컬렉션 내 필드의 최솟값을 구하려면 sort() 메서드와 limit(1)을 함께 사용하면 됩니다. 오름차순으로 정렬한 뒤 첫 번째 문서만 가져오는 방식으로, 가장 작은 값을 가진 문서를 손쉽게 조회할 수 있습니다.

1. 샘플 컬렉션 생성

먼저 테스트에 사용할 컬렉션과 문서를 만들어 보겠습니다. insertOne() 메서드를 사용해 여러 개의 문서를 순차적으로 삽입합니다.

> db.findMinimumValueDemo.insertOne({"Value":1004});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cdfd61abf3115999ed51208")
}
> db.findMinimumValueDemo.insertOne({"Value":983});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cdfd61ebf3115999ed51209")
}
> db.findMinimumValueDemo.insertOne({"Value":990});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cdfd622bf3115999ed5120a")
}
> db.findMinimumValueDemo.insertOne({"Value":1093});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cdfd626bf3115999ed5120b")
}
> db.findMinimumValueDemo.insertOne({"Value":10090});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cdfd62fbf3115999ed5120c")
}

2. 전체 문서 확인하기

삽입된 모든 문서를 확인하려면 find() 메서드를 사용합니다.

> db.findMinimumValueDemo.find();

위 쿼리를 실행하면 다음과 같이 저장된 문서들이 출력됩니다.

{ "_id" : ObjectId("5cdfd61abf3115999ed51208"), "Value" : 1004 }
{ "_id" : ObjectId("5cdfd61ebf3115999ed51209"), "Value" : 983 }
{ "_id" : ObjectId("5cdfd622bf3115999ed5120a"), "Value" : 990 }
{ "_id" : ObjectId("5cdfd626bf3115999ed5120b"), "Value" : 1093 }
{ "_id" : ObjectId("5cdfd62fbf3115999ed5120c"), "Value" : 10090 }

3. 최솟값 조회 쿼리 실행

이제 핵심 단계입니다. sort({Value:1})로 Value 필드를 오름차순 정렬하고, limit(1)로 결과를 하나로 제한하여 최솟값을 가진 문서를 조회합니다.

> db.findMinimumValueDemo.find().sort({Value:1}).limit(1);

실행 결과는 다음과 같습니다.

{ "_id" : ObjectId("5cdfd61ebf3115999ed51209"), "Value" : 983 }

정리 및 추가 팁

위 예제에서는 다섯 개의 값 중 가장 작은 983이 반환된 것을 확인할 수 있습니다. 이 방식의 원리는 간단합니다.

  • sort({필드명: 1}): 해당 필드를 오름차순으로 정렬합니다. (내림차순은 -1)
  • limit(1): 정렬된 결과 중 첫 번째 문서만 가져옵니다.

반대로 최댓값을 구하고 싶다면 sort({Value:-1}).limit(1)처럼 내림차순으로 정렬하면 됩니다. 또한 대량의 데이터가 있는 경우, Value 필드에 인덱스를 생성해 두면 정렬 연산 없이 인덱스 스캔만으로 빠르게 최솟값을 조회할 수 있으므로 성능 면에서 큰 이점을 얻을 수 있습니다.