문서 수 계산
개요
이 가이드에서는 컬렉션에 있는 문서 수를 정확하게 추정하여 집계하는 방법에 대해 알아볼 수 있습니다.
샘플 데이터
이 가이드의 예에서는 students
컬렉션의 다음 문서를 사용합니다.
{ "_id": 1, "name": "Jonathon Howard ", "finalGrade": 87.5 } { "_id": 2, "name": "Keisha Freeman", "finalGrade": 12.3 } { "_id": 3, "name": "Wei Zhang", "finalGrade": 99.0 } { "_id": 4, "name": "Juan Gonzalez", "finalGrade": 85.5 } { "_id": 5, "name": "Erik Trout", "finalGrade": 72.3 } { "_id": 6, "name": "Demarcus Smith", "finalGrade": 88.8 }
다음 Student
클래스는 아래 컬렉션에 있는 문서를 모델링합니다.
public class Student { public int Id { get; set; } public string Name { get; set; } public double FinalGrade { get; set; } }
참고
students
컬렉션의 문서는 카멜 케이스 명명 규칙을 사용합니다. 이 가이드의 예시에서는 ConventionPack
사용하여 컬렉션의 필드를 파스칼식 대/소문자로 역직렬화하고 Student
클래스의 속성에 매핑합니다.
사용자 지정 직렬화에 대해 자세히 알아보려면 사용자 지정 직렬화를 참조하세요.
정확한 카운트
쿼리 필터와 일치하는 문서 수를 계산하려면 CountDocuments()
메서드를 사용하세요. 빈 쿼리 필터를 전달하는 경우 이 메서드는 컬렉션에 있는 총 문서 수를 반환합니다.
예시
다음 예에서는 finalGrade
가 80
보다 작은 문서 수를 계산합니다.
var filter = Builders<Student>.Filter.Lt(s => s.FinalGrade, 80.0); var count = _myColl.CountDocuments(filter); Console.WriteLine("Number of documents with a final grade less than 80: " + count);
동작 수정
CountOptions
유형을 매개 변수로 전달하여 CountDocuments()
의 동작을 수정할 수 있습니다. 옵션을 지정하지 않으면 드라이버는 기본값을 사용합니다.
CountOptions
객체에서 다음 속성을 설정할 수 있습니다.
속성 | 설명 |
---|---|
Collation | The type of language collation to use when sorting results. Default: nil |
Hint | The index to use to scan for documents to count. Default: nil |
Limit | The maximum number of documents to count. Default: 0 |
MaxTime | The maximum amount of time that the query can run on the server. Default: nil |
Skip | The number of documents to skip before counting. Default: 0 |
팁
CountDocuments()
를 사용하여 컬렉션의 총 문서 수를 반환하면 MongoDB는 컬렉션 스캔을 수행합니다. _id
필드에 기본 제공되는 인덱스를 활용에 대한 힌트를 참고하여 컬렉션 스캔을 피하고 이 메서드의 성능을 향상시킬 수 있습니다. 빈 쿼리 매개 변수를 사용하여 CountDocuments()
를 호출할 때만 이 방법을 사용합니다.
var filter = Builders<Student>.Filter.Empty; CountOptions opts = new CountOptions(){Hint = "_id_"}; var count = collection.CountDocuments(filter, opts);
예상 개수
컬렉션의 총 문서 수를 추정하려면 EstimatedDocumentCount()
메서드를 사용합니다.
참고
EstimatedDocumentCount()
메서드는 전체 컬렉션을 스캔하는 대신 컬렉션의 메타데이터를 사용하기 때문에 CountDocuments()
메서드보다 빠릅니다.
동작 수정
EstimatedDocumentCountOptions
유형을 매개 변수로 전달하여 EstimatedDocumentCount()
의 동작을 수정할 수 있습니다. 옵션을 지정하지 않으면 드라이버는 기본값을 사용합니다.
EstimatedDocumentCountOptions
객체에서 다음 속성을 설정할 수 있습니다.
속성 | 설명 |
---|---|
MaxTime | The maximum amount of time that the query can run on the server. Default: nil |
예시
다음 예는 students
컬렉션의 문서 수를 추정하는 예입니다:
var count = _myColl.EstimatedDocumentCount(); Console.WriteLine("Estimated number of documents in the students collection: " + count);
집계
Count()
빌더 메서드를 사용하여 집계 파이프라인의 문서 수를 계산할 수 있습니다.
예시
다음 예시에서는 다음 작업을 수행합니다:
FinalGrade
값이80
보다 큰 문서를 찾기 위한 일치 단계 지정기준과 일치하는 문서의 수 계산
var filter = Builders<Student> .Filter.Gt(s => s.FinalGrade, 80); var result = _myColl.Aggregate().Match(filter).Count(); Console.WriteLine("Number of documents with a final grade more than 80: " + result.First().Count);
추가 정보
언급된 작업에 대해 자세히 알아보려면 다음 가이드를 참조하세요.
API 문서
이 가이드에서 설명하는 메서드나 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.