MongoDB에서 두 필드 조건에 일치하는 문서 개수 세기
MongoDB에서 두 필드가 모두 일치하는 문서만 카운트하려면 count() 메서드를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 단계별로 자세히 살펴보겠습니다.
1단계: 컬렉션 생성 및 문서 삽입
먼저 insertOne() 메서드를 사용하여 demo175 컬렉션에 직원 정보 문서들을 생성합니다:
> db.demo175.insertOne({"EmployeeName":"Bob","isMarried":"YES"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e3840969e4f06af551997e8")
}
> db.demo175.insertOne({"EmployeeName":"David","isMarried":"NO"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e38409e9e4f06af551997e9")
}
> db.demo175.insertOne({"EmployeeName":"Mike","isMarried":"YES"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e3840a79e4f06af551997ea")
}
> db.demo175.insertOne({"EmployeeName":"Sam","isMarried":"NO"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e3840ae9e4f06af551997eb")
}총 네 명의 직원 문서가 삽입되었으며, 각 문서는 이름(EmployeeName)과 결혼 여부(isMarried) 필드를 가지고 있습니다.
2단계: 전체 문서 조회하기
find() 메서드를 사용하여 컬렉션의 모든 문서를 확인할 수 있습니다:
> db.demo175.find();
위 쿼리는 다음과 같은 출력을 생성합니다:
{ "_id" : ObjectId("5e3840969e4f06af551997e8"), "EmployeeName" : "Bob", "isMarried" : "YES" }
{ "_id" : ObjectId("5e38409e9e4f06af551997e9"), "EmployeeName" : "David", "isMarried" : "NO" }
{ "_id" : ObjectId("5e3840a79e4f06af551997ea"), "EmployeeName" : "Mike", "isMarried" : "YES" }
{ "_id" : ObjectId("5e3840ae9e4f06af551997eb"), "EmployeeName" : "Sam", "isMarried" : "NO" }3단계: 두 필드 조건으로 문서 카운트하기
다음은 EmployeeName과 isMarried 두 필드가 모두 일치하는 문서의 개수를 세는 쿼리입니다:
> db.demo175.count( { "EmployeeName": "Mike", "isMarried":"YES" } );위 쿼리는 다음과 같은 출력을 생성합니다:
1
결과값 1은 EmployeeName이 "Mike"이면서 isMarried가 "YES"인 문서가 정확히 하나 존재한다는 의미입니다. 이처럼 count() 메서드에 쿼리 조건 객체를 전달하면 해당 조건을 만족하는 문서만 카운트할 수 있습니다.
참고: 최신 MongoDB 버전에서 권장되는 방법
MongoDB 4.0 이상 버전에서는 count() 메서드가 사용 중단(deprecated) 상태이므로, 대신 countDocuments() 메서드를 사용하는 것이 좋습니다:
> db.demo175.countDocuments( { "EmployeeName": "Mike", "isMarried":"YES" } );countDocuments()는 컬렉션 메타데이터가 아닌 실제 집계(aggregation)를 기반으로 하여 더 정확한 결과를 제공하며, 현재 공식적으로 권장되는 방식입니다. 새 프로젝트에서는 이 메서드를 사용하는 것이 안전합니다.