MongoDB에서 배열에 포함된 항목의 개수를 확인하고 싶을 때는 length 속성을 사용하면 됩니다. 이 글에서는 실제 예제를 통해 배열 항목 개수를 계산하는 과정을 단계별로 살펴보겠습니다.
1. 문서가 포함된 컬렉션 생성하기
먼저 insertOne() 메서드를 사용하여 샘플 데이터가 담긴 컬렉션을 생성합니다. 각 문서에는 이름(Name)과 친구 목록(ListOfFriends) 배열이 포함되어 있습니다.
> db.demo440.insertOne(
... {
... "Name":"Chris",
... "ListOfFriends":["John","Sam","Mike"]
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5e78c63cbbc41e36cc3caeb5")
}
>
> db.demo440.insertOne(
... {
... "Name":"David",
... "ListOfFriends":["Mike","Bob","Carol"]
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5e78c63cbbc41e36cc3caeb6")
}위 코드는 Chris와 David 두 사용자의 문서를 demo440 컬렉션에 삽입합니다. 각 사용자는 3명의 친구로 이루어진 배열을 가지고 있습니다.
2. find() 메서드로 전체 문서 조회하기
컬렉션에 저장된 모든 문서를 확인하려면 find() 메서드를 사용합니다.
> db.demo440.find();
이 명령을 실행하면 다음과 같은 결과가 출력됩니다.
{ "_id" : ObjectId("5e78c63cbbc41e36cc3caeb5"), "Name" : "Chris", "ListOfFriends" : [ "John", "Sam", "Mike" ] }
{ "_id" : ObjectId("5e78c63cbbc41e36cc3caeb6"), "Name" : "David", "ListOfFriends" : [ "Mike", "Bob", "Carol" ] }3. 배열의 항목 개수 계산하기
이제 본격적으로 배열의 항목 개수를 세어 보겠습니다. findOne() 메서드로 특정 문서를 조회한 뒤, 해당 배열 필드에 length 속성을 붙여주면 됩니다.
> db.demo440.findOne({'Name':'David'}).ListOfFriends.length;실행 결과는 다음과 같습니다.
3
David의 친구 목록(ListOfFriends) 배열에는 3개의 항목이 있으므로 결과값으로 3이 반환됩니다.
정리 및 추가 팁
MongoDB에서 배열 항목 개수를 세는 기본 원리는 다음과 같습니다.
- findOne(): 조건에 맞는 단일 문서를 반환합니다.
- .필드명: 반환된 문서에서 원하는 배열 필드에 접근합니다.
- .length: JavaScript 배열의 표준 속성으로, 배열에 포함된 요소의 개수를 반환합니다.
만약 여러 문서의 배열 크기를 한 번에 집계해야 한다면, 애그리게이션 프레임워크의 $size 연산자나 $project 단계를 활용하는 것도 좋은 방법입니다. 또한 특정 크기의 배열을 가진 문서를 검색할 때도 $size 연산자를 사용할 수 있습니다.