문서 홈 → 애플리케이션 개발 → MongoDB 매뉴얼
db.collection.countDocuments()
정의
db.collection.countDocuments(query, options)
중요
Mongo쉬 방법
이 페이지에서는
mongosh
메서드를 설명합니다. 이는 데이터베이스 명령이나 Node.js와 같은 언어별 드라이버에 대한 설명서가 아닙니다 .데이터베이스 명령의 경우
$group
애그리게이션 단계와aggregate
명령이 호출하는$sum
표현식을 참조하세요.MongoDB API 드라이버의 경우 언어별 MongoDB 드라이버 설명서를 참조하세요.
레거시
mongo
셸 문서는 해당 MongoDB 서버 릴리스 문서를 참조하세요.컬렉션 또는 뷰의 쿼리와 일치하는 문서 수에 대한 정수를 반환합니다. 이 메서드는 트랜잭션에서 사용할 수 있습니다.
호환성
다음 환경에서 호스팅되는 배포에 db.collection.countDocuments()
사용할 수 있습니다.
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
구문
countDocuments()
메서드의 형식은 다음과 같습니다.
db.collection.countDocuments( <query>, <options> )
countDocuments()
메서드는 다음 매개 변수를 사용합니다.
매개변수 | 유형 | 설명 |
---|---|---|
쿼리 | 문서 | 쿼리 선택 기준입니다. 모든 문서를 계산하려면 빈 문서를 지정합니다. 쿼리 제한 사항도 참조하세요. |
옵션 | 문서 | 선택 사항입니다. 카운트 동작에 영향을 주는 추가 옵션입니다. |
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 } } } ])
비어 있거나 존재하지 않는 컬렉션 및 뷰
버전 4 부터 시작됩니다.2.1, db.collection.countDocuments()
은 비어 있거나 존재하지 않는 컬렉션 또는 뷰에서 0
을 반환합니다.
이전 버전의 MongoDB에서는 비어 있거나 존재하지 않는 컬렉션 또는 뷰에서 db.collection.countDocuments()
오류가 발생했습니다.
쿼리 제한
다음 쿼리 연산자는 db.collection.countDocuments()
에 대한 쿼리 표현식의 일부로 사용할 수 없습니다.
제한된 연산자 | 대안 | |
---|---|---|
대안으로 대신 $expr 을 사용합니다. | ||
대안으로
| ||
대안으로
|
트랜잭션
db.collection.countDocuments()
는 분산 트랜잭션 내에서 사용할 수 있습니다.
트랜잭션에서 db.collection.countDocuments()
를 사용하는 경우 결과 카운트는 커밋되지 않은 다중 문서 트랜잭션을 필터링하지 않습니다.
중요
대부분의 경우 분산 트랜잭션은 단일 문서 쓰기에 비해 더 큰 성능 비용이 발생하므로 분산 트랜잭션의 가용성이 효과적인 스키마 설계를 대체할 수는 없습니다. 대부분의 시나리오에서 비정규화된 데이터 모델 (내장된 문서 및 배열) 은 계속해서 데이터 및 사용 사례에 최적일 것입니다. 즉, 대부분의 시나리오에서 데이터를 적절하게 모델링하면 분산 트랜잭션의 필요성이 최소화됩니다.
추가 트랜잭션 사용 고려 사항(예: 런타임 제한 및 oplog 크기 제한)은 프로덕션 고려사항을 참조하세요.
클라이언트 연결 해제
MongoDB 4 부터 시작.2, db.collection.countDocuments()
를 발행한 클라이언트가 작업이 완료되기 전에 연결이 끊어지면 MongoDB는killOp
를 사용하여 { db.collection.countDocuments()
를 종료로 표시합니다
예제
컬렉션의 모든 문서 수 계산
orders
컬렉션의 문서 수를 계산하려면 다음 작업을 사용합니다.
db.orders.countDocuments( {}, { hint: "_id_"} )
참고
빈 쿼리 필터와 함께 db.collection.countDocuments()
를 사용하면 MongoDB가 전체 컬렉션 스캔을 수행하므로 비효율적일 수 있습니다. 성능을 향상시키기 위해 이 예제에서는 자동으로 생성된 _id
인덱스를 사용하도록 hint()
을 지정합니다. 또는 { "_id": { $gte: MinKey } }
와 같이 모든 문서를 찾는 쿼리 필터를 사용하여 인덱스를 사용하는 모든 문서의 수를 계산할 수 있습니다.
쿼리와 일치하는 모든 문서 수 세기
ord_dt
필드가 new
Date('01/01/2012')
보다 큰 orders
컬렉션에 있는 문서 수를 계산합니다.
db.orders.countDocuments( { ord_dt: { $gt: new Date('01/01/2012') } }, { limit: 100 } )