카운트
정의
count
컬렉션 또는 보기 화면에 있는 문서 수를 계산합니다. 이 개수와 명령 상태가 포함된 문서를 반환합니다.
팁
참고
4.0 기능과 호환되는 MongoDB 드라이버는
countDocuments()
및estimatedDocumentCount()
에 해당하는 새로운 API를 위해 각각의 커서 및 컬렉션count()
API(count
명령 실행)를 더 이상 사용하지 않습니다. 특정 드라이버의 구체적인 API 이름은 드라이버 API 설명서를 참조하세요. 특정 드라이버의 구체적인 API 이름은 드라이버 API 설명서를 참조하세요.
호환성
이 명령은 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
중요
이 명령은 M0, M2 및 M5 클러스터에서 제한적으로 지원됩니다. 자세한 내용은 지원되지 않는 명령을 참조하세요.
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
구문
명령은 다음과 같은 구문을 가집니다:
참고
버전 4.2부터 MongoDB는 count
명령의 옵션 이름에 대해 더 엄격한 유효성 검사를 구현합니다. 이제 알 수 없는 옵션 이름을 지정하면 명령에 오류가 발생합니다.
{ count: <collection or view>, query: <document>, limit: <integer>, skip: <integer>, hint: <hint>, readConcern: <document>, maxTimeMS: <integer>, collation: <document>, comment: <any> }
count
에는 다음과 같은 필드가 있습니다:
필드 | 유형 | 설명 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
count | 문자열 | 계산할 컬렉션 또는 보기의 이름입니다. | ||||||||||
query | 문서 | 선택 사항입니다. 컬렉션 또는 보기에서 집계할 문서를 선택하는 쿼리입니다. | ||||||||||
limit | integer | 선택 사항. 반환할 일치 문서의 최대 개수입니다. | ||||||||||
skip | integer | 선택 사항입니다. 결과를 반환하기 전에 건너뛸 일치하는 문서의 수입니다. | ||||||||||
hint | 문자열 또는 문서 | 선택 사항입니다. 사용할 인덱스입니다. 인덱스 이름을 문자열로 지정하거나 인덱스 사양 문서로 지정합니다. | ||||||||||
readConcern | 문서 | 선택 사항입니다. 읽기 고려를 지정합니다. 이 옵션의 구문은 다음과 같습니다:
가능한 읽기 고려 수준은 다음과 같습니다.
읽기 고려 수준에 대한 자세한 내용은 읽기 고려 수준을 참조하세요. | ||||||||||
maxTimeMS | non-negative integer | 선택 사항. .. include:: /includes/maxTimeMS-description.rst | ||||||||||
collation | 문서 | 선택 사항. 작업에 사용할 데이터 정렬을 지정합니다. 데이터 정렬을 사용하면 대소문자 및 악센트 표시 규칙과 같은 문자열 비교에 대한 언어별 규칙을 지정할 수 있습니다. 데이터 정렬 옵션의 구문은 다음과 같습니다:
데이터 정렬을 지정할 때 데이터 정렬이 지정되지 않았지만 컬렉션에 기본 데이터 정렬이 있는 경우( 컬렉션 또는 연산에 대한 데이터 정렬이 지정되지 않은 경우, MongoDB는 이전 버전에서 문자열 비교에 사용된 간단한 이진 비교를 사용합니다. 한 연산에 대해 여러 데이터 정렬을 지정할 수 없습니다. 예를 들어 필드별로 서로 다른 데이터 정렬을 지정할 수 없으며 정렬과 함께 찾기를 수행하는 경우 찾기 와 정렬에서 각각 다른 데이터 정렬을 사용하는 것은 허용되지 않습니다. 버전 3.4에 새로 추가되었습니다. | ||||||||||
comment | any | 선택 사항. 이 명령에 첨부할 사용자 제공 코멘트입니다. 설정되면 이 설명은 다음 위치에서 이 명령의 레코드와 함께 표시됩니다.
댓글은 유효한 모든 BSON types (문자열, 정수, 객체, 배열 등)이 될 수 있습니다. |
안정적인 API 지원
MongoDB 5.0.9 부터 count
명령이 Stable API V1 에 포함되어 있습니다. Stable API에서 count
명령을 사용하려면 MongoDB 5.0 을 실행하는 배포서버에 드라이버를 연결해야 합니다.9 이상입니다.
행동
카운트 및 트랜잭션
트랜잭션에서 count
를 사용하면 결과 개수는 커밋되지 않은 다중 문서 트랜잭션을 필터링하지 않습니다.
자세한 내용은 트랜잭션 및 카운트 작업을 참조하세요.
정확도 및 샤드 클러스터
샤딩된 클러스터에서 count
명령을 쿼리 조건 없이 실행하면 고아 문서가 존재하거나 청크 마이그레이션이 진행 중인 경우 개수가 부정확 할 수 있습니다.
이러한 상황을 방지하려면 샤드 클러스터에서 다음과 같이 db.collection.aggregate()
메서드를 사용합니다.
$count
단계를 사용하여 문서 수를 계산할 수 있습니다. 예를 들어 다음 작업에서는 collection의 문서 수를 계산합니다.
db.collection.aggregate( [ { $count: "myCount" } ])
$count
단계는 다음 $group
+ $project
시퀀스와 동일합니다.
db.collection.aggregate( [ { $group: { _id: null, count: { $sum: 1 } } } { $project: { _id: 0 } } ] )
예기치 않은 종료 후 정확도
Wired Tiger 스토리지 엔진을 사용하여 mongod
를 비정상적으로 종료한 후에는 count
에서 보고한 크기 통계가 정확하지 않을 수 있습니다.
편차의 정도는 마지막 체크포인트와 비정상 종료 사이에 수행된 삽입, 업데이트 또는 삭제 작업의 수에 따라 달라집니다. 체크포인트는 보통 60초마다 발생합니다. 그러나mongod
기본값이 아닌 --syncdelay
설정으로 실행되는 인스턴스는 체크포인트가 다소 빈번하게 발생할 수 있습니다.
mongod
의 각 컬렉션에서 validate
를 실행하여 비정상 종료 후 통계를 복원합니다.
비정상 종료 후
참고
이 정확도 손실은 쿼리 문서를 포함하지 않는 count
작업에만 적용됩니다.
클라이언트 연결 해제
MongoDB 4.2부터 count
를 발급한 클라이언트가 작업이 완료되기 전에 연결을 끊는 경우, MongoDB는 count
를 사용하여 를killOp
을 종료로 표시합니다.
예제
다음 섹션에서는 count
명령의 예시를 제공합니다.
모든 문서 계산
다음 연산은 orders
컬렉션에 있는 모든 문서의 개수를 계산합니다.
db.runCommand( { count: 'orders' } )
결과에서 개수를 나타내는 n
은 26
이고 명령 상태 ok
는 1
입니다.
{ "n" : 26, "ok" : 1 }
쿼리와 일치하는 문서 수 세기
다음 작업은 ord_dt
필드의 값이 Date('01/01/2012')
보다 큰 orders
컬렉션의 문서 수를 반환합니다.
db.runCommand( { count:'orders', query: { ord_dt: { $gt: new Date('01/01/2012') } } } )
결과에서 개수를 나타내는 n
는 13
이고 명령 상태 ok
는 1
입니다.
{ "n" : 13, "ok" : 1 }
문서 수 건너뛰기
다음 연산은 orders
컬렉션에서 ord_dt
필드 값이 Date('01/01/2012')
보다 큰 문서 수를 반환하고 일치하는 첫 번째 10
문서를 건너뜁니다:
db.runCommand( { count:'orders', query: { ord_dt: { $gt: new Date('01/01/2012') } }, skip: 10 } )
결과에서 개수를 나타내는 n
는 3
이고 명령 상태 ok
는 1
입니다.
{ "n" : 3, "ok" : 1 }
사용할 인덱스 지정
다음 작업에서는 인덱스 { status: 1 }
를 사용하여 ord_dt
필드 값이 Date('01/01/2012')
보다 크고 status
필드 값이 "D"
인 orders
컬렉션의 문서 수를 반환합니다.
db.runCommand( { count:'orders', query: { ord_dt: { $gt: new Date('01/01/2012') }, status: "D" }, hint: { status: 1 } } )
결과에서 개수를 나타내는 n
는 1
이고 명령 상태 ok
는 1
입니다.
{ "n" : 1, "ok" : 1 }
기본 읽기 고려 재정의
기본 읽기 문제 수준인 "local"
를 재정의하려면 readConcern
옵션을 사용하십시오.
복제본 세트에 대한 다음 작업은 대부분의 노드에 기록된 것으로 확인된 데이터의 가장 최근 복제본을 읽을 수 있도록 "majority"
의 읽기 고려를 지정합니다.
중요
"majority"
의readConcern
수준을 사용하려면 비어 있지 않은query
조건을 지정해야 합니다.읽기 고려 수준에 관계없이 노드의 최신 데이터는 시스템에 있는 데이터의 최신 버전을 반영하지 않을 수 있습니다.
db.runCommand( { count: "restaurants", query: { rating: { $gte: 4 } }, readConcern: { level: "majority" } } )
단일 스레드가 자신의 쓰기를 읽을 수 있도록 하려면 복제본 세트의 프라이머리에 대해 "majority"
읽기 고려 및 "majority"
쓰기 고려를 사용합니다.