MongoDB에서 Aggregation 프레임워크를 사용하면 $project 연산자와 $add 연산자를 조합하여 두 필드의 값을 손쉽게 합산할 수 있습니다. 이 글에서는 실제 예제를 통해 그 과정을 단계별로 살펴보겠습니다.
1. 샘플 컬렉션 생성
먼저 테스트에 사용할 컬렉션을 만들고 문서를 삽입합니다.
> db.sumTwoFieldsDemo.insertOne({"FirstValue":150,"SecondValue":350});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c9b4bfe15e86fd1496b38cd")
}
> db.sumTwoFieldsDemo.insertOne({"FirstValue":450,"SecondValue":1550});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c9b4c1215e86fd1496b38ce")
}
> db.sumTwoFieldsDemo.insertOne({"FirstValue":2560,"SecondValue":2440});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c9b4c2715e86fd1496b38cf")
}2. 저장된 문서 확인
find() 메서드를 사용해 컬렉션의 모든 문서를 조회합니다.
> db.sumTwoFieldsDemo.find().pretty();
위 쿼리를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
{
"_id" : ObjectId("5c9b4bfe15e86fd1496b38cd"),
"FirstValue" : 150,
"SecondValue" : 350
}
{
"_id" : ObjectId("5c9b4c1215e86fd1496b38ce"),
"FirstValue" : 450,
"SecondValue" : 1550
}
{
"_id" : ObjectId("5c9b4c2715e86fd1496b38cf"),
"FirstValue" : 2560,
"SecondValue" : 2440
}3. $project와 $add로 두 필드 합산하기
이제 Aggregation 파이프라인에서 $project 단계를 사용해 새로운 필드를 정의하고, 그 안에서 $add 연산자로 두 필드의 합을 계산합니다.
> db.sumTwoFieldsDemo.aggregate(
... { "$project" :
... {
... 'First' : '$FirstValue',
... 'Second' : '$SecondValue',
... 'TotalValueOfBothFields' : { '$add' : [ '$FirstValue', '$SecondValue' ] },
... }
... }
... );4. 실행 결과
쿼리를 실행하면 각 문서마다 두 필드의 합계가 담긴 새로운 필드가 추가된 것을 확인할 수 있습니다.
{ "_id" : ObjectId("5c9b4bfe15e86fd1496b38cd"), "First" : 150, "Second" : 350, "TotalValueOfBothFields" : 500 }
{ "_id" : ObjectId("5c9b4c1215e86fd1496b38ce"), "First" : 450, "Second" : 1550, "TotalValueOfBothFields" : 2000 }
{ "_id" : ObjectId("5c9b4c2715e86fd1496b38cf"), "First" : 2560, "Second" : 2440, "TotalValueOfBothFields" : 5000 }정리
$project 단계는 출력 문서의 형태를 재구성하는 역할을 하며, 이때 산술 연산자인 $add를 함께 사용하면 기존 필드들을 조합한 계산된 필드를 만들 수 있습니다. 위 예제처럼 FirstValue와 SecondValue를 더한 TotalValueOfBothFields 필드가 각 문서에 자동으로 생성되는 것을 볼 수 있습니다. 이 방식은 원본 컬렉션의 데이터를 변경하지 않고도 필요한 계산 결과만 추출할 수 있어 매우 유용합니다.