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

MongoDB 집계 파이프라인에서 $size 연산자로 배열 길이 구하는 방법

MongoDB에서 집계로 배열 길이 구하기

MongoDB에서 배열 필드의 요소 개수(길이)를 확인하려면 집계(aggregation) 파이프라인에서 $project 단계와 $size 연산자를 함께 사용하면 됩니다. 이번 글에서는 실제 예제를 통해 배열 길이를 구하는 전체 과정을 단계별로 살펴보겠습니다.

1. 샘플 컬렉션 생성

먼저 문서가 담긴 컬렉션을 생성합니다. 아래 예제에서는 여러 과목 정보를 담은 'details' 배열 필드를 포함한 문서를 삽입합니다.

> db.demo382.insertOne(
... {
... "Name" : "David",
... "details" : [
... {
... "SubjectName":"MySQL"
... },
... {
... "SubjectName":"MongoDB"
... },
... {
... "SubjectName":"Java"
... }
... ]
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5e5b5e1c22064be7ab44e7f0")
}

2. 저장된 문서 조회하기

find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 확인할 수 있습니다.

> db.demo382.find().pretty();

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

{
"_id" : ObjectId("5e5b5e1c22064be7ab44e7f0"),
"Name" : "David",
"details" : [
{
"SubjectName" : "MySQL"
},
{
"SubjectName" : "MongoDB"
},
{
"SubjectName" : "Java"
}
]
}

3. $match와 $project, $size 조합하기

배열의 길이를 구하는 핵심 쿼리입니다. 먼저 $match로 특정 문서를 필터링한 뒤, $project 단계에서 $size 연산자를 적용해 'details' 배열의 요소 개수를 새로운 필드 'count'에 담습니다.

> db.demo382.aggregate([
... { "$match": { "Name": "David" } },
... { "$project": { "count": { "$size": "$details" }}}
... ])

쿼리를 실행하면 다음과 같이 배열의 길이가 3으로 출력되는 것을 확인할 수 있습니다.

{ "_id" : ObjectId("5e5b5e1c22064be7ab44e7f0"), "count" : 3 }

정리

MongoDB에서 배열 길이를 구할 때는 집계 파이프라인의 $project 단계에서 $size 연산자를 사용하는 것이 가장 간단하고 효율적인 방법입니다. $match로 대상 문서를 먼저 좁혀두면 불필요한 연산을 줄여 성능도 함께 개선할 수 있습니다.