문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

db.collection.countDocuments()

이 페이지의 내용

  • 정의
  • 호환성
  • 구문
  • 행동
  • 예제
db.collection.countDocuments(query, options)

중요

Mongo쉬 방법

이 페이지에서는 mongosh 메서드를 설명합니다. 이는 데이터베이스 명령이나 Node.js와 같은 언어별 드라이버에 대한 설명서가 아닙니다 .

데이터베이스 명령의 경우 $group 애그리게이션 단계와 aggregate 명령이 호출하는 $sum 표현식을 참조하세요.

MongoDB API 드라이버의 경우 언어별 MongoDB 드라이버 설명서를 참조하세요.

레거시 mongo 셸 문서는 해당 MongoDB 서버 릴리스 문서를 참조하세요.

Mongo 셸 V4.4

컬렉션 또는 뷰의 쿼리와 일치하는 문서 수에 대한 정수를 반환합니다. 이 메서드는 트랜잭션에서 사용할 수 있습니다.

다음 환경에서 호스팅되는 배포에 db.collection.countDocuments() 사용할 수 있습니다.

  • MongoDB Atlas: 클라우드에서의 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을 사용합니다.

대안으로 $geoWithin$center와 함께 사용합니다. 즉, 다음과 같습니다.

{ $geoWithin: { $center: [ [ <x>, <y> ], <radius> ] } }

대안으로 $geoWithin$centerSphere와 함께 사용합니다. 즉, 다음과 같습니다.

{ $geoWithin: { $centerSphere: [ [ <x>, <y> ], <radius> ] } }

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 } )

← db.collection.count()

이 페이지의 내용