문서 메뉴

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

cursor.count()

이 페이지의 내용

  • 정의
  • 행동
  • 예제
cursor.count()

중요

Mongo쉬 방법

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

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

참고

4.0 기능과 호환되는 MongoDB 드라이버는 countDocuments()estimatedDocumentCount()에 해당하는 새로운 API를 위해 각각의 커서 및 컬렉션 count() API를 더 이상 사용하지 않습니다. 특정 드라이버의 구체적인 API 이름은 드라이버 API 설명서를 참조하세요.

커서가 참조하는 문서 수를 계산합니다. count() 메서드를 find() 쿼리에 추가하여 일치하는 문서 수를 반환합니다. 이 작업은 쿼리를 수행하지 않고 대신 쿼리에서 반환되는 결과를 계산합니다.

count() 메서드의 프로토타입 형식은 다음과 같습니다.

db.collection.find(<query>).count()

count() 메서드에는 다음과 같은 매개 변수가 있습니다.

매개변수
유형
설명
applySkipLimit
부울
선택 사항. 카운트에서 cursor.skip()cursor.limit() 메서드의 효과를 고려할지 여부를 지정합니다. 기본적으로 count() 메서드는 cursor.skip()cursor.limit() 의 효과를 무시합니다. 이러한 메서드의 효과를 고려하려면 applySkipLimittrue 로 설정합니다.

또한 MongoDB는 db.collection.find(<query>).count() 구성의 대안으로 동등한 db.collection.count()를 제공합니다.

MongoDB는 과 함께 hint() {count() 사용을 지원합니다. 예제 는 사용할 인덱스 지정을 참조하세요.

다음도 참조하세요.

쿼리 조건자를 find() 지정하지 않은 count() count() 작업에서 를 호출하면 메서드가 부정확한 문서 수를 반환할 수 있습니다. 이러한 메서드는 count() 컬렉션의 메타데이터를 기반으로 결과를 반환하므로 대략적인 개수가 나올 수 있습니다. 특히,

컬렉션 메타데이터를 기반으로 한 카운트에 대해서는 카운트 옵션이 있는 collStats 파이프라인 단계를 참조하세요.

트랜잭션 에서 count 및 셸 헬퍼 count()db.collection.count() 를 사용할 수 없습니다.

자세한 내용은 트랜잭션 및 카운트 작업을 참조하세요.

샤드 클러스터에서 에count() 쿼리 술어가 없는 는 find 고아 문서 가 존재하거나 청크 마이그레이션 이 진행 중인 경우 개수가 부정확 할 수 있습니다.

이러한 상황을 방지하려면 샤드 클러스터에서 다음과 같이 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 } }
] )

다음도 참조하세요.

$collStats 는 collection의 메타데이터를 기반으로 대략적인 개수를 반환합니다.

다음 인덱스가 있는 collection을 생각해 보겠습니다.

{ a: 1, b: 1 }

개수를 셀 때 MongoDB는 다음과 같은 경우 인덱스만 사용하여 개수를 반환할 수 있습니다.

  • 이 쿼리로 인덱스를 사용할 수 있고,

  • 쿼리에는 인덱스의 키에 대한 조건만 포함되어 있습니다. 그리고

  • 쿼리 조건자가 연속된 단일 범위의 인덱스 키에 액세스합니다.

예를 들어 다음 작업은 인덱스만 사용하여 개수를 반환할 수 있습니다.

db.collection.find( { a: 5, b: 5 } ).count()
db.collection.find( { a: { $gt: 5 } } ).count()
db.collection.find( { a: 5, b: { $gt: 10 } } ).count()

그러나 쿼리가 인덱스를 사용할 수 있지만 쿼리 조건자가 단일 연속 범위의 인덱스 키에 액세스하지 않거나 쿼리에 인덱스 외부 필드에 대한 조건도 포함된 경우에는 인덱스를 사용하는 것 외에도 MongoDB가 문서를 읽어야만 개수를 반환할 수 있습니다.

db.collection.find( { a: 5, b: { $in: [ 1, 2, 3 ] } } ).count()
db.collection.find( { a: { $gt: 5 }, b: 5 } ).count()
db.collection.find( { a: 5, b: 5, c: 5 } ).count()

이러한 경우 문서를 처음 읽는 동안 MongoDB는 동일한 개수 작업의 후속 호출이 더 나은 성능을 갖도록 문서를 메모리로 페이징합니다.

다음은 count() 메서드의 예입니다.

다음 연산은 orders 컬렉션에 있는 모든 문서의 개수를 계산합니다.

db.orders.find().count()

다음 작업은 new Date('01/01/2012')보다 큰 ord_dt 필드가 있는 orders collection의 문서 수를 계산합니다.

db.orders.find( { ord_dt: { $gt: new Date('01/01/2012') } } ).count()

다음 연산에서는 limit(5)이(가) 적용되었으며 new Date('01/01/2012')를 초과하는 ord_dt 필드를 사용하여 orders 컬렉션 내 문서의 수를 계산합니다.

db.orders.find( { ord_dt: { $gt: new Date('01/01/2012') } } ).limit(5).count(true)

다음 작업에서는 인덱스 키 사양이 { status: 1 }"status_1" 인덱스를 사용하여 ord_dt 필드가 new Date('01/01/2012')보다 크고 status 필드가 "D"orders collection에 있는 문서 수를 반환합니다.

db.orders.find(
{ ord_dt: { $gt: new Date('01/01/2012') }, status: "D" }
).hint( "status_1" ).count()
← cursor.comment()

이 페이지의 내용