MongoDB 컬렉션의 문서 수 구하기
MongoDB에서 특정 컬렉션에 저장된 문서의 개수를 알고 싶다면 count() 메서드를 사용하면 됩니다. 나아가 데이터베이스에 존재하는 모든 컬렉션의 문서 수를 한 번에 조회하고 싶다면 db.getCollectionNames()와 자바스크립트의 map() 함수를 조합하는 것이 가장 간편합니다.
기본 문법
db.getCollectionNames().map(function(anyVariableName) {
return { 'name': anyVariableName, 'count': db[anyVariableName].count() }
});이 코드는 현재 접속 중인 데이터베이스(여기서는 'test' 데이터베이스)의 모든 컬렉션 이름 목록을 가져온 뒤, 각 컬렉션마다 count()를 호출하여 컬렉션 이름과 문서 개수를 담은 객체 배열을 반환합니다.
실행 예시
'test' 데이터베이스에서 위 문법을 실제로 실행해 보겠습니다.
> db.getCollectionNames().map(function(ColName) {
... return { 'ColName': ColName, 'TotalDocument': db[ColName].count() }
... });실행 결과
쿼리를 실행하면 컬렉션 이름(ColName)과 해당 컬렉션의 전체 문서 수(TotalDocument)가 짝을 이루어 배열 형태로 출력됩니다. 실제 결과는 컬렉션 수만큼 매우 길게 출력되므로, 여기서는 앞부분 일부만 발췌했습니다.
[
{ 'ColName': 'ConvertStringToDateDemo', 'TotalDocument': 4 },
{ 'ColName': 'Employee_Information', 'TotalDocument': 2 },
{ 'ColName': 'IdUpdateDemo', 'TotalDocument': 3 },
{ 'ColName': 'IndexingDemo', 'TotalDocument': 1 },
{ 'ColName': 'NotAndDemo', 'TotalDocument': 5 },
...
]문서가 하나도 없는 빈 컬렉션은 0으로 표시됩니다. 이 방식을 활용하면 데이터베이스 전체의 컬렉션 현황과 데이터 분포를 한눈에 파악할 수 있어, 데이터베이스 점검이나 마이그레이션 전 상태 확인에 유용합니다.
참고: 최신 버전에서 권장되는 방법
최근 MongoDB 버전에서는 레거시 count() 대신 아래 두 메서드를 사용하는 것이 공식적으로 권장됩니다.
- estimatedDocumentCount() — 컬렉션 메타데이터를 기반으로 거의 즉시 근사치를 반환합니다. 대용량 컬렉션에서 성능상 유리합니다.
- countDocuments() — 실제 문서를 집계하여 정확한 개수를 반환하며, 필요에 따라 필터 조건도 함께 지정할 수 있습니다.
예를 들어 특정 컬렉션의 정확한 문서 수가 필요하다면 다음과 같이 작성합니다.
db.myCollection.countDocuments({});마무리
db.getCollectionNames()와 map()을 활용하면 별도의 스크립트 없이도 데이터베이스 내 모든 컬렉션의 문서 수를 손쉽게 집계할 수 있습니다. 단일 컬렉션의 정확한 개수가 필요할 때는 countDocuments(), 전체 현황을 한눈에 파악할 때는 위의 map 방식을 활용하면 상황에 맞게 효율적으로 문서 수를 관리할 수 있습니다.