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

MongoDB 집계 파이프라인에서 $limit로 레코드 수 제한하기

MongoDB에서 반환되는 문서(레코드)의 개수를 제한하려면 집계 파이프라인 단계 중 하나인 $limit를 사용하면 됩니다. 이번 글에서는 예제 컬렉션을 만들고 $limit를 활용해 결과 레코드 수를 제한하는 방법을 살펴보겠습니다.

1. 샘플 컬렉션 생성 및 문서 삽입

먼저 insertOne() 메서드를 사용해 demo240 컬렉션에 문서를 차례로 삽입합니다.

> db.demo240.insertOne({"StudentName":"Chris"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e441d969af932883c61ea3c")
}
> db.demo240.insertOne({"StudentName":"Bob"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e441d9a9af932883c61ea3d")
}
> db.demo240.insertOne({"StudentName":"David"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e441d9d9af932883c61ea3e")
}
> db.demo240.insertOne({"StudentName":"Mike"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e441da19af932883c61ea3f")
}

2. find()로 전체 문서 조회하기

find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 확인할 수 있습니다.

> db.demo240.find();

위 쿼리를 실행하면 다음과 같이 총 4개의 문서가 출력됩니다.

{ "_id" : ObjectId("5e441d969af932883c61ea3c"), "StudentName" : "Chris" }
{ "_id" : ObjectId("5e441d9a9af932883c61ea3d"), "StudentName" : "Bob" }
{ "_id" : ObjectId("5e441d9d9af932883c61ea3e"), "StudentName" : "David" }
{ "_id" : ObjectId("5e441da19af932883c61ea3f"), "StudentName" : "Mike" }

3. $limit로 레코드 수 제한하기

이제 aggregate() 안에 $limit 단계를 넣어 결과 레코드 수를 제한해 보겠습니다. 아래 쿼리는 최대 3개의 문서만 반환합니다.

> db.demo240.aggregate( { $limit : 3 });

실행 결과는 다음과 같습니다. 앞서 조회했던 4개의 문서 중 처음 3개만 출력된 것을 확인할 수 있습니다.

{ "_id" : ObjectId("5e441d969af932883c61ea3c"), "StudentName" : "Chris" }
{ "_id" : ObjectId("5e441d9a9af932883c61ea3d"), "StudentName" : "Bob" }
{ "_id" : ObjectId("5e441d9d9af932883c61ea3e"), "StudentName" : "David" }

정리

MongoDB의 집계 파이프라인에서 $limit는 지정한 개수만큼의 문서만 통과시키는 단계입니다. 일반적으로 $sort, $match 등의 다른 단계와 함께 사용되어, 정렬된 결과 중 상위 N개만 가져오는 등의 페이징 처리나 성능 최적화에 유용하게 활용됩니다.