정의
$count
스테이지에 입력된 문서 수의 개수가 포함된 문서를 다음 스테이지로 전달합니다.
참고
명확화
이 페이지에서는
$count
집계 파이프라인 단계에 대해 설명합니다.$count
집계 누산기에 대해서는$count (aggregation accumulator)
를 참조하세요.
호환성
다음 환경에서 호스팅되는 배포에 $count
사용할 수 있습니다.
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
구문
$count
의 구문은 다음과 같습니다:
{ $count: <string> }
<string>
은 카운트를 값으로 갖는 출력 필드의 이름입니다. <string>
은 비어 있지 않은 $
.
문자열이어야 하며 로 시작하지 않아야 하고 문자를 포함하지 않아야 합니다.
행동
반환 유형은 카운트의 최종 값을 저장 수 있는 가장 작은 유형으로integer
표시됩니다: → long
→ double
$count
단계는 다음 $group
및 $project
시퀀스와 동일합니다.
db.collection.aggregate( [ { $group: { _id: null, myCount: { $sum: 1 } } }, { $project: { _id: 0 } } ] )
myCount
는 개수를 저장하는 출력 필드 입니다. 출력 필드 에 다른 이름을 지정할 수 있습니다.
입력 데이터 세트가 비어 있으면 $count
결과를 반환하지 않습니다.
팁
{db.collection.countDocuments()
$group
$sum
2}는 집계 단계를 표현식으로 래핑합니다.
예시
이 문서를 사용하여 scores
이라는 이름의 컬렉션 만듭니다.
db.scores.insertMany( [ { "_id" : 1, "subject" : "History", "score" : 88 }, { "_id" : 2, "subject" : "History", "score" : 92 }, { "_id" : 3, "subject" : "History", "score" : 97 }, { "_id" : 4, "subject" : "History", "score" : 71 }, { "_id" : 5, "subject" : "History", "score" : 79 }, { "_id" : 6, "subject" : "History", "score" : 83 } ] )
다음 집계 작업은 두 단계로 구성됩니다:
$match
단계에서는score
값이80
미만인 문서를 제외하고score
값이80
보다 큰 문서를 다음 단계로 전달합니다.$count
단계는 집계 파이프라인에 남아 있는 문서 수를 반환하고 해당 값을passing_scores
필드에 할당합니다.
db.scores.aggregate( [ { $match: { score: { $gt: 80 } } }, { $count: "passing_scores" } ] )
이 작업은 다음 결과를 반환합니다.
{ "passing_scores" : 4 }
입력 데이터 세트가 비어 있으면 $count
결과를 반환하지 않습니다. 다음 예시 점수가 99
보다 큰 문서가 없기 때문에 결과를 반환하지 않습니다.
db.scores.aggregate( [ { $match: { score: { $gt: 99 } } }, { $count: "high_scores" } ] )
이 페이지의 C# 예제에서는 Atlas 샘플 데이터 세트의 sample_mflix
데이터베이스 사용합니다. 무료 MongoDB Atlas cluster 생성하고 샘플 데이터 세트를 로드하는 방법을 학습하려면 MongoDB .NET/ C# 드라이버 문서에서 시작하기 를 참조하세요.
다음 Movie
클래스는 sample_mflix.movies
컬렉션의 문서를 모델링합니다.
public class Movie { public ObjectId Id { get; set; } public int Runtime { get; set; } public string Title { get; set; } public string Rated { get; set; } public List<string> Genres { get; set; } public string Plot { get; set; } public ImdbData Imdb { get; set; } public int Year { get; set; } public int Index { get; set; } public string[] Comments { get; set; } [ ] public DateTime LastUpdated { get; set; } }
참고
파스칼 케이스용 ConventionPack
이 페이지의 C# 클래스는 속성 이름에 파스칼식 대소문자를 사용하지만 MongoDB 컬렉션 의 필드 이름은 카멜식 대소문자를 사용합니다. 이러한 차이를 해소하기 위해 애플리케이션 시작될 때 다음 코드를 사용하여 ConventionPack
를 등록할 수 있습니다.
var camelCaseConvention = new ConventionPack { new CamelCaseElementNameConvention() }; ConventionRegistry.Register("CamelCase", camelCaseConvention, type => true);
MongoDB .NET/ C# 운전자 사용하여 $count
집계 파이프라인 에 단계를 추가하려면 PipelineDefinition
객체 에서 Count() 메서드를 호출합니다.
다음 예시 입력 문서 수를 계산하고 그 수를 값으로 사용하여 문서 반환하는 파이프라인 단계를 만듭니다.
var pipeline = new EmptyPipelineDefinition<Movie>() .Count();