Docs Menu
Docs Home
/ / /
Node.js 드라이버
/ / /

반환되는 결과 수 제한

이 페이지의 내용

  • 개요
  • 샘플 문서
  • Limit
  • Skip

읽기 작업에서 반환할 수 있는 문서 수를 제한하려면 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 },
]);

참고

쿼리 작업은 일치하는 문서가 포함된 커서에 대한 레퍼런스를 반환할 수 있습니다. 커서에 저장된 데이터를 검사하는 방법을 알아보려면 커서 기본 사항 페이지를 참조하세요.

다음 예시는 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 }

참고

limitsort를 호출하는 순서는 중요하지 않습니다. 드라이버가 정렬을 먼저 적용하고 그 다음에 제한을 적용하도록 호출의 순서를 변경하기 때문입니다. 다음 두 호출은 동일합니다:

myColl.find(query).sort({ length: -1 }).limit(3);
myColl.find(query).limit(3).sort({ length: -1 });

find() 메서드 호출 시 options 객체에 지정하여 sortlimit을 적용할 수도 있습니다. 다음 두 호출은 동일합니다:

myColl.find(query).sort({ length: -1 }).limit(3);
myColl.find(query, { sort: { length: -1 }, limit: 3 });

find() 메서드의 options 설정에 대한 자세한 내용은 find()에 대한 API 문서를 참조하세요.

결과에서 다음 세 권의 책을 보려면 아래와 같이 우회할 문서 수를 전달하는 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 }

이러한 방식으로 건너뛰기와 제한을 결합하여 컬렉션에 대한 페이징을 구현할 수 있으며, 컬렉션의 작은 '부분'만 한 번에 반환할 수 있습니다.

돌아가기

반환된 결과 건너뛰기

이 페이지의 내용