개요
이 가이드 에서는 MongoDB Rust 드라이버 를 사용하여 제한 작업을 수행하는 방법을 학습 수 있습니다. 이러한 작업은 읽기 작업에서 반환된 문서 수를 지정합니다.
읽기 작업에서 반환할 수 있는 문서 수를 제한하려면 limit() 메서드를 사용합니다. 지정된 제한에 도달할 만큼 문서가 충분하지 않은 경우 작업은 더 적은 수의 문서를 반환합니다.
limit() 메서드를 skip() 메서드와 함께 사용하면 건너뛰기가 먼저 적용되고 제한은 나머지 문서에만 적용됩니다. 건너뛰기 작업에 학습 보려면 반환된 결과 건너뛰기 가이드 를 참조하세요.
예시용 샘플 데이터
이 가이드의 예시에서는 books collection의 문서에 대한 모델로 다음 Book 구조체를 사용합니다.
struct Book {     name: String,     author: String,     length: i32, } 
다음 코드는 books 컬렉션 에 샘플 데이터를 삽입하는 방법을 보여줍니다.
let uri = "connection string"; let client = Client::with_uri_str(uri).await?; let my_coll: Collection<Book> = client.database("db").collection("books"); let books = vec![     Book {         id: 1,         name: "The Brothers Karamazov".to_string(),         author: "Dostoyevsky".to_string(),         length: 824,     },     Book {         id: 2,         name: "Atlas Shrugged".to_string(),         author: "Rand".to_string(),         length: 1088,     },     Book {         id: 3,         name: "Les Misérables".to_string(),         author: "Hugo".to_string(),         length: 1462,     },     Book {         id: 4,         name: "A Dance with Dragons".to_string(),         author: "Martin".to_string(),         length: 1104,     }, ]; my_coll.insert_many(books).await?; 
문서 제한
쿼리 또는 집계 파이프라인 에서 반환할 최대 문서 수를 지정할 수 있습니다.
이 섹션에서는 다음과 같은 방법으로 결과를 제한하는 방법에 대해 설명합니다.
- limit() 메서드: - limit()메서드를- find()메서드에 연결합니다.
- FindOptions 구조체: - limit옵션 사용
- 집계 파이프라인: 단계를 사용하는 파이프라인 을 만듭니다. - $limit
limit() 메서드 예제
반환되는 문서 수를 제한하려면 limit() 메서드를 find() 메서드에 연결할 수 있습니다.
이 예시 에서는 다음 조치를 수행하는 find() 작업을 실행합니다.
- 결과를 - length필드 값의 오름차순으로 정렬합니다.
- 결과를 처음 세 문서로 제한합니다. 
let mut cursor = my_coll     .find(doc! {})     .sort(doc! { "length": 1 })     .limit(3).await?; while let Some(result) = cursor.try_next().await? { println!("{:?}", result); } 
Book { name: "The Brothers Karamazov", author: "Dostoyevsky", length: 824 } Book { name: "Atlas Shrugged", author: "Rand", length: 1088 } Book { name: "A Dance with Dragons", author: "Martin", length: 1104 } 
옵션 예시
또는 쿼리 에 대한 옵션을 설정하고 재사용하는 경우 FindOptions 사용할 수 있습니다. limit() 옵션 빌더 메서드를 사용하여 FindOptions 구조체의 limit 필드 를 설정합니다. 그런 다음 with_options() 메서드를 find() 메서드에 연결하고 FindOptions 구조체를 with_options() 메서드에 매개 변수로 전달합니다.
이 예시 에서는 다음 조치를 수행하는 find() 작업을 실행합니다.
- length필드 가- 1000보다 큰 문서만 포함하도록 결과를 필터링합니다.
- 결과를 - length필드 값의 오름차순으로 정렬합니다.
- 결과를 처음 두 문서로 제한합니다. 
let filter = doc! { "length": { "$gt": 1000 } }; let find_options = FindOptions::builder()     .sort(doc! { "length": 1 })     .limit(2)     .build(); let mut cursor = my_coll.find(filter).with_options(find_options).await?; while let Some(result) = cursor.try_next().await? {     println!("{:?}", result); } 
Book { name: "Atlas Shrugged", author: "Rand", length: 1088 } Book { name: "A Dance with Dragons", author: "Martin", length: 1104 } 
집계 예시
집계 파이프라인 에서 $limit 단계를 사용하여 반환되는 결과를 제한할 수 있습니다. 집계 작업에 학습 보려면 애그리게이션 가이드 를 참조하세요.
이 예시 에서는 다음 작업을 수행하는 집계 파이프라인 을 실행합니다.
- 결과를 - length필드 값의 내림차순으로 정렬합니다.
- 반환된 결과를 처음 두 문서로 제한합니다. 
let pipeline = vec![     doc! { "$match": {} },     doc! { "$sort": { "length": -1 } },     doc! { "$limit": 2 }, ]; let mut cursor = my_coll.aggregate(pipeline).await?; while let Some(result) = cursor.try_next().await? {     println!("{:?}", result); } 
Document({"_id": Int32(3), "name": String("Les Misérables"), "author": String("Hugo"), "length": Int32(1462)}) Document({"_id": Int32(4), "name": String("A Dance with Dragons"), "author": String("Martin"), "length": Int32(1104)}) 
추가 정보
이 가이드 에 언급된 작업에 학습 보려면 다음 가이드를 참조하세요.
API 문서
이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.