MongoDB에서 특정 조건과 일치하는 레코드의 개수를 확인하려면 count() 메서드를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 컬렉션을 만들고, 조건에 맞는 문서의 개수를 집계하는 방법을 단계별로 살펴보겠습니다.
1. 샘플 컬렉션 생성하기
먼저 insertOne() 메서드를 사용해 demo205 컬렉션에 문서를 세 개 삽입합니다. 여기서는 Name과 Age가 빈 문자열이고 isActive가 false인 문서 두 개, 그리고 값이 채워져 있고 isActive가 true인 문서 하나를 준비했습니다.
> db.demo205.insertOne(
... {
... "id": "101",
... "Name": "",
... "Age": "",
... "isActive": false
... }
...);
{
"acknowledged" : true,
"insertedId" : ObjectId("5e3d8a3003d395bdc21346eb")
}
> db.demo205.insertOne(
... {
... "id": "102",
... "Name": "Chris",
... "Age": "25",
... "isActive": true
... }
...);
{
"acknowledged" : true,
"insertedId" : ObjectId("5e3d8a3003d395bdc21346ec")
}
> db.demo205.insertOne(
... {
... "id": "103",
... "Name": "",
... "Age": "",
... "isActive": false
... }
...);
{
"acknowledged" : true,
"insertedId" : ObjectId("5e3d8a3003d395bdc21346ed")
}2. 저장된 문서 전체 조회하기
find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 화면에 출력할 수 있습니다.
> db.demo205.find();
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
{ "_id" : ObjectId("5e3d8a3003d395bdc21346eb"), "id" : "101", "Name" : "", "Age" : "", "isActive" : false }
{ "_id" : ObjectId("5e3d8a3003d395bdc21346ec"), "id" : "102", "Name" : "Chris", "Age" : "25", "isActive" : true }
{ "_id" : ObjectId("5e3d8a3003d395bdc21346ed"), "id" : "103", "Name" : "", "Age" : "", "isActive" : false }3. 조건에 일치하는 레코드 개수 세기
이제 핵심 단계입니다. count() 메서드에 조건 객체를 인자로 전달하면, 해당 조건과 일치하는 문서만 골라 개수를 반환합니다. 아래 예제에서는 Name이 빈 문자열이면서 Age도 빈 문자열이고, isActive가 false인 문서의 개수를 집계합니다.
> db.demo205.count({
... Name: "",
... Age: "",
... "isActive": false
... });실행 결과는 다음과 같습니다.
2
정리
위 결과에서 알 수 있듯이, Name과 Age가 비어 있고 isActive가 false인 문서는 총 2개입니다. 이처럼 MongoDB의 count() 메서드는 복수의 필드 조건을 동시에 지정할 수 있어, 원하는 기준에 맞는 레코드 수를 손쉽게 집계할 때 매우 유용합니다.
참고로 최신 MongoDB 버전(4.0 이상)에서는 count() 대신 countDocuments() 또는 estimatedDocumentCount() 사용이 권장됩니다. 정확한 조건 기반 집계가 필요하다면 db.demo205.countDocuments({ Name: "", Age: "", isActive: false }) 형태로 작성하면 됩니다.