반환되는 결과 수 제한
개요
읽기 작업에서 반환할 수 있는 문서 수를 제한하려면 limit
를 사용합니다. limit
는 작업에서 반환할 수 있는 최대 문서 수를 제한하는 역할을 하지만 문서가 충분하지 않아 제한에 도달할 수 없는 경우 더 적은 수의 문서를 반환할 수 있습니다. limit
을 건너뛰기 메서드와 함께 사용하면 건너뛰기가 먼저 적용되고 건너뛰기 후 남은 문서에만 제한이 적용됩니다.
샘플 문서
이 가이드의 예시를 따라 하려면 다음 코드 스니펫을 사용하여 책을 설명하는 문서를 myDB.books
컬렉션에 삽입하세요.
const myDB = client.db("myDB"); const myColl = myDB.collection("books"); await myColl.insertMany([ { "_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": "Martin", "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 = myColl.find(query).sort(sort).limit(limit); for await (const doc of cursor) { 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
를 호출하는 순서는 중요하지 않습니다. 드라이버가 정렬을 먼저 적용하고 그 다음에 제한을 적용하도록 호출의 순서를 변경하기 때문입니다. 다음 두 호출은 동일합니다:
myColl.find(query).sort({ length: -1 }).limit(3); myColl.find(query).limit(3).sort({ length: -1 });
find()
메서드 호출 시 options
객체에 지정하여 sort
및 limit
을 적용할 수도 있습니다. 다음 두 호출은 동일합니다:
myColl.find(query).sort({ length: -1 }).limit(3); myColl.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 = myColl.find(query).sort(sort).limit(limit).skip(skip); for await (const doc of cursor) { 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 }
이러한 방식으로 건너뛰기와 제한을 결합하여 컬렉션에 대한 페이징을 구현할 수 있으며, 컬렉션의 작은 '부분'만 한 번에 반환할 수 있습니다.