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

MongoDB에서 13으로 시작하는 필드 값을 가진 문서 개수 세는 방법

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가 인덱스를 효율적으로 사용할 수 있습니다. 반대로 ^ 없이 중간 검색을 하게 되면 전체 컬렉션을 스캔해야 하므로 대용량 데이터에서는 성능 저하가 발생할 수 있습니다.