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