개요
이 가이드 에서는 다음 메서드를 Find() 메서드에 연결하여 읽기 작업에서 반환할 문서를 지정하는 방법을 학습 수 있습니다.
Limit(): Specifies the maximum number of documents to return from a query
Sort(): Specifies the sort order for the returned documents
Skip(): 쿼리 결과를 반환하기 전에 건너뛸 문서 수를 지정합니다.
샘플 데이터
이 가이드의 예시에서는 Atlas 샘플 데이터 세트의 sample_restaurants 데이터베이스에 있는 restaurants 컬렉션을 사용합니다. 무료 MongoDB Atlas 클러스터 생성하고 샘플 데이터 세트를 로드하는 방법을 학습하려면 MongoDB 시작하기 가이드 를 참조하세요.
이 페이지의 예제에서는 다음 Restaurant 클래스를 컬렉션 의 문서에 대한 모델로 사용합니다.
[] public class Restaurant { public ObjectId Id { get; set; } [] public string Name { get; set; } [] public string Cuisine { get; set; } }
Limit
읽기 작업에서 반환되는 최대 문서 수를 지정하려면 IFindFluent 인터페이스에서 제공하는 Limit() 메서드를 사용합니다. Find() 메서드를 호출한 후 Limit() 메서드를 연결하여 작업의 동작을 수정합니다.
다음 예시 에서는 cuisine 필드 값이 "Italian" 인 모든 레스토랑을 찾고 결과를 5 문서로 제한합니다.
var filter = Builders<Restaurant>.Filter.Eq("cuisine", "Italian"); var results = collection.Find(filter).Limit(5).ToList(); foreach (var result in results) { Console.WriteLine(result.Name); }
팁
앞의 예시 에서는 데이터베이스 에서의 기본 기본 순서 에 따라 쿼리 와 일치하는 처음 5개의 문서를 반환합니다. 다음 섹션에서는 지정된 순서대로 문서를 반환하는 방법에 대해 설명합니다.
Sort
지정된 순서로 문서를 반환하려면 IFindFluent 인터페이스에서 제공하는 Sort() 메서드를 사용합니다. Find() 메서드를 호출한 후 Sort() 메서드를 연결하여 작업의 동작을 수정합니다.
Sort()를 호출할 때는 정렬 정의를 매개변수로 전달해야 합니다. Builders<T>.Sort.Ascending() 메서드를 사용하여 가장 낮은 값부터 가장 높은 값까지 값을 정렬하거나 Builders<T>.Sort.Ascending() 메서드를 사용하여 가장 높은 값에서 가장 낮은 값으로 정렬하여 정렬 정의를 구성할 수 있습니다. 이 두 메서드 모두 정렬 기준으로 사용할 필드 이름을 매개 변수로 사용합니다. 이러한 메서드를 연결하여 반환된 문서를 여러 필드를 기준으로 정렬할 수 있습니다.
다음 예시 cuisine 필드 값이 "Italian"인 모든 문서를 name 필드 값의 오름차순으로 정렬하여 반환합니다.
var filter = Builders<Restaurant>.Filter.Eq("cuisine", "Italian"); var sort = Builders<Restaurant>.Sort.Ascending("name"); var results = collection.Find(filter).Sort(sort).ToList(); foreach (var result in results) { Console.WriteLine(result.Name); }
Skip
쿼리 결과를 반환하기 전에 지정된 수의 문서를 건너뛰려면 IFindFluent 인터페이스에서 제공하는 Skip() 메서드를 사용합니다. Find() 메서드를 호출한 후 Skip() 메서드를 연결하여 작업의 동작을 수정합니다.
다음 예시 에서는 cuisine 필드 값이 "Italian" 인 모든 문서를 반환하고 처음 10 문서를 건너뜁니다.
var filter = Builders<Restaurant>.Filter.Eq("cuisine", "Italian"); var results = collection.Find(filter).Skip(10).ToList(); foreach (var result in results) { Console.WriteLine(result.Name); }
제한, 정렬 및 건너뛰기 결합
Limit(), Sort() 및 Skip() 메서드를 단일 Find() 메서드 호출에 연결할 수 있습니다. 이를 통해 읽기 작업에서 반환할 정렬된 최대 문서 수를 설정하다 반환하기 전에 지정된 수의 문서를 건너뛸 수 있습니다.
다음 예시 cuisine 값이 "Italian"인 5 문서를 반환합니다. 결과는 처음 10 개 문서를 건너뛰고 name 필드 값을 기준으로 오름차순으로 정렬됩니다.
var filter = Builders<Restaurant>.Filter.Eq("cuisine", "Italian"); var sort = Builders<Restaurant>.Sort.Ascending("name"); var results = collection.Find(filter).Limit(10).Sort(sort).Skip(10).ToList(); foreach (var result in results) { Console.WriteLine(result.Name); }
참고
이러한 메서드를 호출하는 순서는 반환되는 문서를 변경하지 않습니다. .NET/ C# 드라이버 호출을 자동으로 재정렬하여 정렬 작업을 먼저 수행하고 건너뛰기 작업을 수행한 다음 제한 작업을 수행합니다.
추가 정보
문서 조회에 대한 자세한 내용은 데이터 조회 가이드 를 참조하세요.
쿼리 지정에 대한 자세한 내용은 쿼리 필터 만들기 가이드를 참조하세요.
API 문서
이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.