정의
$count스테이지에 입력된 문서 수의 개수가 포함된 문서를 다음 스테이지로 전달합니다.
참고
명확화
이 페이지에서는
$count집계 파이프라인 단계에 대해 설명합니다.$count을 다른 다음 문맥에서도 사용할 수 있습니다:$count (accumulator), 그룹에 있는 문서 수를 반환합니다.$count (window function)는$setWindowFields단계에서 특정 창의 문서 수를 반환하는 데 사용됩니다.
호환성
다음 환경에서 호스팅되는 배포에 $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 표현식으로 래핑합니다.
예시
이 페이지의 예시는 sample_mflix 데이터 세트의 데이터를 사용합니다. 이 데이터 세트를 자체 관리형 MongoDB 배포서버에 로드하는 방법에 대한 자세한 내용은 샘플 데이터세트 로드를 참조하세요. 샘플 데이터베이스를 수정한 경우, 이 페이지의 예시를 실행하려면 데이터베이스를 제거하고 다시 생성해야 할 수 있습니다.
다음 집계 작업은 두 단계로 구성됩니다:
$match단계는metacritic이100인 문서를 필터링하여 해당 문서만 다음 단계로 전달합니다.$count단계는 집계 파이프라인에 남아 있는 문서 수를 반환하고 해당 값을perfect_score_count필드에 할당합니다.
db.movies.aggregate( [ { $match: { metacritic: { $eq: 100 } } }, { $count: "perfect_score_count" }] )[ { perfect_score_count: 8 } ]이 페이지의 C# 예제에서는 Atlas 샘플 데이터 세트의 sample_mflix 데이터베이스 사용합니다. 무료 MongoDB Atlas cluster 생성하고 샘플 데이터 세트를 로드하는 방법을 학습하려면 MongoDB .NET/ C# 드라이버 문서에서 시작하기 를 참조하세요.
다음 Movie 클래스는 sample_mflix.movies 컬렉션의 문서를 모델링합니다.
[BsonIgnoreExtraElements]public class Movie{ [BsonId] public ObjectId Id { get; set; } [BsonElement("title")] public string Title { get; set; } = null!; [BsonElement("year")] public int? Year { get; set; } [BsonElement("runtime")] public int? Runtime { get; set; } [BsonElement("rated")] public string? Rated { get; set; } [BsonElement("metacritic")] public int Metacritic { get; set; } [BsonElement("plot")] public string? Plot { get; set; } [BsonElement("type")] public string? Type { get; set; } [BsonElement("cast")] public string[]? Cast { get; set; } [BsonElement("directors")] public string[]? Directors { get; set; } [BsonElement("writers")] public string[]? Writers { get; set; } [BsonElement("imdb")] public ImdbData? Imdb { get; set; }}MongoDB .NET/ C# 운전자 사용하여 $count 집계 파이프라인 에 단계를 추가하려면 PipelineDefinition 객체 에서 UnionWith() 메서드를 호출합니다.
다음 예시 metacritic 필드 값이 100인 movies 컬렉션 의 모든 문서 수를 반환하는 파이프라인 단계를 만듭니다.
var pipeline = new EmptyPipelineDefinition<Movie>() .Match(Builders<Movie>.Filter.Eq(m => m.Metacritic, 100)) .Count();이 페이지의 Node.js 예제에서는 Atlas 샘플 데이터 세트의 sample_mflix 데이터베이스 사용합니다. 무료 MongoDB Atlas cluster 생성하고 샘플 데이터 세트를 로드하는 방법을 학습하려면 MongoDB Node.js 운전자 설명서에서 시작하기 를 참조하세요.
MongoDB Node.js 운전자 사용하여 집계 파이프라인 에 $count 단계를 추가하려면 파이프라인 객체 에서 $count 연산자 사용합니다.
다음 예시 에서는 sample_mflix.movies 컬렉션 의 입력 문서 수를 계산하고 해당 개수가 포함된 문서 반환하는 파이프라인 단계를 만듭니다. 그런 다음 이 예시 에서는 집계 파이프라인 실행합니다.
const pipeline = [{ $count: "movies" }];
const cursor = collection.aggregate(pipeline);return cursor;