MongoDB에서 특정 조건에 맞는 문서의 개수를 세려면 $count를 사용할 수 있습니다. 만약 "13"으로 시작하는 값들을 찾고 싶다면 정규 표현식인 $regex를 활용하면 됩니다.
컬렉션 생성 및 문서 삽입
먼저 문서가 포함된 컬렉션을 생성해 보겠습니다.
> db.demo570.insertOne({Information:{Value:"13675"}});{
"acknowledged" : true, "insertedId" : ObjectId("5e90959b39cfeaaf0b97b583")
}
> db.demo570.insertOne({Information:{Value:"14135"}});{
"acknowledged" : true, "insertedId" : ObjectId("5e9095a739cfeaaf0b97b584")
}
> db.demo570.insertOne({Information:{Value:"15113"}});{
"acknowledged" : true, "insertedId" : ObjectId("5e9095b639cfeaaf0b97b585")
}
> db.demo570.insertOne({Information:{Value:"13141"}});{
"acknowledged" : true, "insertedId" : ObjectId("5e9095c139cfeaaf0b97b586")
}위 코드에서는 총 4개의 문서를 삽입했습니다. 각 문서는 Information 객체 안에 문자열 형태의 Value 필드를 가지고 있습니다.
find() 메서드로 전체 문서 조회하기
find() 메서드를 사용하면 컬렉션의 모든 문서를 확인할 수 있습니다.
> db.demo570.find();
이 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
{ "_id" : ObjectId("5e90959b39cfeaaf0b97b583"), "Information" : { "Value" : "13675" } }
{ "_id" : ObjectId("5e9095a739cfeaaf0b97b584"), "Information" : { "Value" : "14135" } }
{ "_id" : ObjectId("5e9095b639cfeaaf0b97b585"), "Information" : { "Value" : "15113" } }
{ "_id" : ObjectId("5e9095c139cfeaaf0b97b586"), "Information" : { "Value" : "13141" } }$regex로 13으로 시작하는 문서 개수 세기
이제 "13"으로 시작하는 값의 개수를 세어 보겠습니다. 아래 쿼리는 인덱스를 활용할 수 있어 더 빠른 성능을 제공합니다.
> db.demo570.count({'Information.Value': { '$regex' : '^13' }});여기서 핵심은 정규 표현식 '^13'입니다. 캐럿(^) 기호는 문자열의 시작을 의미하므로, "13675"와 "13141"처럼 "13"으로 시작하는 값만 매칭됩니다. 반면 "14135"나 "15113"은 중간에 13이 포함되어 있지만 시작하지 않기 때문에 제외됩니다.
쿼리 실행 결과는 다음과 같습니다.
2
결과적으로 "13"으로 시작하는 문서는 총 2개임을 확인할 수 있습니다.
참고 사항
정규 표현식 앞에 ^를 붙여 시작 위치를 고정하면 MongoDB가 인덱스를 효율적으로 사용할 수 있습니다. 반대로 ^ 없이 중간 검색을 하게 되면 전체 컬렉션을 스캔해야 하므로 대용량 데이터에서는 성능 저하가 발생할 수 있습니다.