반환되는 결과 수 제한
개요
읽기 작업에서 반환될 수 있는 문서 수를 제한하려면 limit
을 사용하세요. limit
은 작업에서 반환할 수 있는 최대 문서 수를 제한하는 역할을 하지만 문서가 충분하지 않아 제한에 도달할 수 없는 경우 더 적은 수의 문서를 반환할 수 있습니다. 건너뛰기(skip) 메서드와 함께 limit
을 사용하면 건너뛰기가 먼저 적용되고 제한은 건너뛰기 후 남은 문서에만 적용됩니다.
샘플 문서
아래 예제의 지침에 따라 컬렉션 에 데이터를 삽입하고 정렬, 건너뛰기 및 제한을 사용하여 쿼리 에서 특정 결과만 반환합니다. 책을 설명하는 다음과 같은 문서 컬렉션 을 가정해 보겠습니다.
[ { "_id": 1, "name": "The Brothers Karamazov", "author": "Dostoyevsky", "length": 824 }, { "_id": 2, "name": "Les Misérables", "author": "Hugo", "length": 1462 }, { "_id": 3, "name": "Atlas Shrugged", "author": "Rand", "length": 1088 }, { "_id": 4, "name": "Infinite Jest", "author": "Wallace", "length": 1104 }, { "_id": 5, "name": "Cryptonomicon", "author": "Stephenson", "length": 918 }, { "_id": 6, "name": "A Dance With Dragons", "author": "Tolkein", "length": 1104 }, ]
참고
쿼리 작업은 일치하는 문서가 포함된 커서에 대한 레퍼런스를 반환할 수 있습니다. 커서에 저장된 데이터를 검사하는 방법을 알아보려면 커서 기본 사항 페이지를 참조하세요.
Limit
다음 예시는 collection을 쿼리하여 가장 긴 책 세 권을 반환합니다. 쿼리 필터가 비어 있기 때문에 모든 문서와 일치합니다. 그런 다음 length
필드에 내림차순 sort
를 적용하여 짧은 책 앞에 긴 책을 반환하고 limit
를 적용하여 처음 3
개 결과만 반환합니다.
// define an empty query document const query = {}; // sort in descending (-1) order by length const sort = { length: -1 }; const limit = 3; const cursor = collection.find(query).sort(sort).limit(limit); await cursor.forEach(console.dir);
위의 코드 예시는 길이별로 정렬된 다음 세 개의 문서를 출력합니다.
{ "_id": 2, "title": "Les Misérables", "author": "Hugo", "length": 1462 } { "_id": 6, "title": "A Dance With Dragons", "author": "Martin", "length": 1104 } { "_id": 4, "title": "Infinite Jest", "author": "Wallace", "length": 1104 }
참고
limit
및 sort
를 호출하는 순서는 중요하지 않습니다. 드라이버가 정렬을 먼저 적용하고 그 다음에 제한을 적용하도록 호출의 순서를 변경하기 때문입니다. 다음 두 호출은 동일합니다:
collection.find(query).sort({ length: -1 }).limit(3); collection.find(query).limit(3).sort({ length: -1 });
find()
메서드 호출 시 options
객체에 지정하여 sort
및 limit
을 적용할 수도 있습니다. 다음 두 호출은 동일합니다:
collection.find(query).sort({ length: -1 }).limit(3); collection.find(query, { sort: { length: -1 }, limit: 3 });
find()
메서드의 options
설정에 대한 자세한 내용은 find()에 대한 API 문서를 참조하십시오.
Skip
결과에서 다음 세 권의 책을 보려면 아래와 같이 우회할 문서 수를 전달하는 skip()
메서드를 추가합니다.
// define an empty query document const query = {}; // sort in descending (-1) order by length const sort = { length: -1 }; const limit = 3; const skip = 3; const cursor = collection.find(query).sort(sort).limit(limit).skip(skip); await cursor.forEach(console.dir);
이 작업은 네 번째 책부터 여섯 번째 책까지를 설명하는 문서를 길이가 가장 긴 순서대로 반환합니다:
{ "_id": 3, "title": "Atlas Shrugged", "author": "Rand", "length": 1088 } { "_id": 5, "title": "Cryptonomicon", "author": "Stephenson", "length": 918 } { "_id": 1, "title": "The Brothers Karamazov", "author": "Dostoyevsky", "length": 824 }
이러한 방식으로 건너뛰기와 제한을 결합하여 컬렉션에 대한 페이징을 구현할 수 있으며, 컬렉션의 작은 '부분'만 한 번에 반환할 수 있습니다.