MongoDB에서 쿼리 결과의 개수를 제한하려면 limit() 메서드를 사용합니다. 이 메서드는 find() 쿼리가 반환할 문서(document)의 최대 개수를 지정할 수 있어, 대량의 데이터 중 필요한 만큼만 효율적으로 가져올 때 유용합니다.
1. 컬렉션 생성 및 문서 삽입
먼저 insertOne() 메서드를 사용해 컬렉션을 생성하고 문서를 삽입해 보겠습니다.
> db.demo58.insertOne({"Name":"David"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e285f8fcfb11e5c34d8991f")
}
> db.demo58.insertOne({"Name":"David"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e285f93cfb11e5c34d89920")
}
> db.demo58.insertOne({"Name":"David"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e285f94cfb11e5c34d89921")
}
> db.demo58.insertOne({"Name":"Mike"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e285f99cfb11e5c34d89922")
}2. find()로 전체 문서 조회하기
find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 확인할 수 있습니다.
> db.demo58.find();
위 쿼리는 다음과 같은 출력 결과를 생성합니다.
{ "_id" : ObjectId("5e285f8fcfb11e5c34d8991f"), "Name" : "David" }
{ "_id" : ObjectId("5e285f93cfb11e5c34d89920"), "Name" : "David" }
{ "_id" : ObjectId("5e285f94cfb11e5c34d89921"), "Name" : "David" }
{ "_id" : ObjectId("5e285f99cfb11e5c34d89922"), "Name" : "Mike" }3. limit() 메서드로 결과 개수 제한하기
이제 limit() 메서드를 활용한 쿼리를 살펴보겠습니다. 아래 예제에서는 변수 v에 값 2를 할당한 뒤, limit(v+1)을 사용하여 최대 3개의 문서만 조회하고, size() 메서드로 실제 반환된 문서 수가 v보다 큰지 판별합니다.
> v=2;
2
> d=db.demo58.find({"Name":"David"}).limit(v+1);
{ "_id" : ObjectId("5e285f8fcfb11e5c34d8991f"), "Name" : "David" }
{ "_id" : ObjectId("5e285f93cfb11e5c34d89920"), "Name" : "David" }
{ "_id" : ObjectId("5e285f94cfb11e5c34d89921"), "Name" : "David" }
> m=d.size() > v;실행 결과는 다음과 같습니다.
true
결과 해석
Name이 "David"인 문서는 총 3개이며, limit(3)으로 조회했기 때문에 3개의 문서가 반환되었습니다. 반환된 문서 수(3)가 변수 v(2)보다 크므로 비교 연산의 결과는 true가 됩니다.
참고 사항
limit() 메서드는 성능 최적화에도 도움이 됩니다. 지정된 개수만큼의 문서를 찾으면 더 이상 추가 검색을 수행하지 않으므로, 불필요한 데이터 스캔을 줄일 수 있습니다. 또한 skip() 메서드와 함께 사용하면 페이지네이션(pagination) 기능도 손쉽게 구현할 수 있습니다.