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

MongoDB에서 특정 필드의 배열 요소 개수 구하는 방법 ($size 연산자 활용)

MongoDB에서 문서 내 배열 필드에 포함된 요소의 개수를 세고 싶다면, 집계 파이프라인(aggregate)에서 $size 연산자를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 배열 요소 개수를 조회하는 방법을 단계별로 살펴보겠습니다.

1. 샘플 컬렉션 생성하기

먼저 데모용 컬렉션을 만들고 문서를 삽입합니다. 각 문서는 'Subject'라는 배열 필드를 가지고 있습니다.

> db.demo723.insertOne({"Subject":["MySQL","MongoDB"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5eab094d43417811278f588a")
}
> db.demo723.insertOne({"Subject":["C"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5eab095243417811278f588b")
}
> db.demo723.insertOne({"Subject":["C++","Java","Python"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5eab095f43417811278f588c")
}

2. 저장된 문서 확인하기

find() 메서드를 사용해 컬렉션의 모든 문서를 조회합니다.

> db.demo723.find();

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

{ "_id" : ObjectId("5eab094d43417811278f588a"), "Subject" : [ "MySQL", "MongoDB" ] }
{ "_id" : ObjectId("5eab095243417811278f588b"), "Subject" : [ "C" ] }
{ "_id" : ObjectId("5eab095f43417811278f588c"), "Subject" : [ "C++", "Java", "Python" ] }

3. $size로 배열 요소 개수 세기

이제 핵심 단계입니다. $project 스테이지와 함께 $size 연산자를 사용하면 각 문서의 배열 길이를 새로운 필드로 반환받을 수 있습니다.

> db.demo723.aggregate([
...    { $project: { count: { $size: '$Subject' } } }
... ])

실행 결과, 각 문서별로 Subject 배열에 담긴 요소의 개수가 'count' 필드로 출력됩니다.

{ "_id" : ObjectId("5eab094d43417811278f588a"), "count" : 2 }
{ "_id" : ObjectId("5eab095243417811278f588b"), "count" : 1 }
{ "_id" : ObjectId("5eab095f43417811278f588c"), "count" : 3 }

정리

MongoDB에서 배열 필드의 요소 개수를 확인하는 가장 간단하고 효율적인 방법은 집계 파이프라인에서 $size 연산자를 사용하는 것입니다. 참고로 $size는 인자로 반드시 배열 표현식을 받아야 하며, 필드가 배열이 아닌 경우 에러가 발생할 수 있으므로 데이터 구조를 사전에 확인하는 것이 좋습니다.