Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

MongoDB에서 조건에 일치하는 레코드 개수 세기 – count() 메서드 활용 가이드

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 }) 형태로 작성하면 됩니다.