드라이버가 포함된 MongoDB
이 페이지에서는 mongosh 메서드를 설명합니다. MongoDB 드라이버에서 해당 메서드를 보려면 프로그래밍 언어의 해당 페이지를 참조하세요.
정의
db.collection.countDocuments(query, options)컬렉션 또는 뷰의 쿼리 와 일치하는 문서 수에 대한 정수를 반환합니다. 이 메서드는 트랜잭션에서 사용할 수 있습니다.
호환성
이 메서드는 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
참고
이 명령은 모든 MongoDB Atlas 클러스터에서 지원됩니다. 모든 명령에 대한 Atlas 지원에 관해 자세히 알아보려면 지원되지 않는 명령을 참조하십시오.
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
구문
countDocuments() 메서드의 형식은 다음과 같습니다.
db.collection.countDocuments( <query>, <options> )
매개변수
countDocuments() 메서드는 다음 매개 변수를 사용합니다.
Parameter | 유형 | 설명 |
|---|---|---|
쿼리 | 문서 | 쿼리 선택 기준입니다. 모든 문서 수를 계산하려면 빈 문서 지정합니다. 쿼리 제한 사항도 참조하세요. |
옵션 | 문서 | 선택 사항입니다. 카운트 동작에 영향을 주는 추가 옵션입니다. |
options 문서에는 다음을 포함할 수 있습니다.
필드 | 유형 | 설명 |
|---|---|---|
| integer | 선택 사항입니다. 계산할 최대 문서 수입니다. |
| integer | 선택 사항. 계산하기 전에 건너뛸 문서 수입니다. |
| 문자열 또는 문서 | 선택 사항. 쿼리에 사용할 인덱스 이름 또는 인덱스 사양입니다. |
| integer | 선택 사항. 카운트 실행을 허용하는 최대 시간입니다. |
행동
메커니즘
와 달리 db.collection.count() 는countDocuments() 메타데이터 를 사용하여 개수를 반환하지 않습니다. 대신 비정상 종료 후나 샤딩된 클러스터 에 고아 문서가 있는 경우 문서 집계 수행하여 정확한 개수를 반환합니다.
countDocuments() 다음 집계 작업을 래핑하고 n 값만 반환합니다.
db.collection.aggregate([ { $match: <query> }, { $group: { _id: null, n: { $sum: 1 } } } ])
비어 있거나 존재하지 않는 컬렉션 및 뷰
countDocuments() 비어 있거나 존재하지 않는 컬렉션 또는 뷰에서 0 를 반환합니다.
쿼리 제한
다음 쿼리 연산자는 countDocuments()에 대한 쿼리 표현식 의 일부로 사용할 수 없습니다.
제한된 연산자 | 대안 | |
|---|---|---|
대안으로 대신 | ||
대안으로 | ||
대안으로 |
트랜잭션
countDocuments() 분산 트랜잭션 내에서 사용할 수 있습니다.
트랜잭션 countDocuments() 에서 을(를) 사용하면 결과 카운트에서 커밋되지 않은 다중 문서 트랜잭션이 필터하다 되지 않습니다.
중요
대부분의 경우 분산 트랜잭션은 단일 문서 쓰기에 비해 더 큰 성능 비용이 발생하므로 분산 트랜잭션의 가용성이 효과적인 스키마 설계를 대체할 수는 없습니다. 대부분의 시나리오에서 비정규화된 데이터 모델 (내장된 문서 및 배열) 은 계속해서 데이터 및 사용 사례에 최적일 것입니다. 즉, 대부분의 시나리오에서 데이터를 적절하게 모델링하면 분산 트랜잭션의 필요성이 최소화됩니다.
추가 트랜잭션 사용 고려 사항(예: 런타임 제한 및 oplog 크기 제한)은 프로덕션 고려사항을 참조하세요.
클라이언트 연결 해제
을 발행한 클라이언트 가 countDocuments() 작업이 완료되기 전에 연결이 끊긴 경우, MongoDB 를 사용하여 countDocuments() killOp 을종료로 표시합니다.
예시
이 페이지의 예시에서는 sample_mflix 샘플 데이터 세트의 데이터를 사용합니다. 이 데이터 세트를 자체 관리형 MongoDB 배포서버에 로드하는 방법에 대한 자세한 내용은 샘플 데이터 세트 로드를 참조하세요. 샘플 데이터베이스를 수정한 경우 이 페이지의 예시를 실행 하려면 데이터베이스를 제거하고 다시 만들어야 할 수 있습니다.
컬렉션의 모든 문서 수 계산
movies 컬렉션의 모든 문서 수를 계산하려면 다음 작업을 사용합니다.
db.movies.countDocuments( { }, { hint: "_id_"} )
참고
빈 쿼리 필터와 함께 db.collection.countDocuments()를 사용하는 경우, 몽고DB는 전체 컬렉션 스캔을 수행하므로 비효율적일 수 있습니다. 성능을 개선하기 위해 이 예시에서는 hint()를 지정하여 자동으로 생성된 _id 인덱스를 사용합니다. 또는 { "_id": { $gte: MinKey } }와 같이 모든 문서를 찾는 쿼리 필터를 사용하여 인덱스를 통해 모든 문서를 계산할 수 있습니다.
쿼리와 일치하는 모든 문서 수 세기
이 예시 directors 필드 에 "David Lynch"가 포함된 movies 컬렉션 의 문서 수를 계산합니다.
db.movies.countDocuments( { directors: "David Lynch" } )