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

MongoDB에서 두 필드의 합계를 구해 새 필드에 저장하는 방법 ($add 활용)

MongoDB에서 두 필드의 합계를 다른 필드에 저장하기

MongoDB는 문서(document) 기반 데이터베이스이므로 관계형 데이터베이스의 '열(column)' 개념은 '필드(field)'에 해당합니다. 두 필드의 값을 더한 결과를 새로운 필드에 저장하려면 집계 파이프라인(aggregate)에서 $add 연산자를 사용하면 됩니다.

아래 예제를 통해 단계별로 살펴보겠습니다.

1단계: 컬렉션 생성 및 문서 삽입

먼저 insertOne() 메서드를 사용해 예제용 컬렉션에 문서를 하나 삽입합니다.

> db.demo291.insertOne({"Value1":10,"Value2":50});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e4c0e1e5d93261e4bc9ea2f")
}

2단계: find() 메서드로 문서 확인

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

> db.demo291.find();

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

{ "_id" : ObjectId("5e4c0e1e5d93261e4bc9ea2f"), "Value1" : 10, "Value2" : 50 }

3단계: $project와 $add로 두 필드의 합계 계산

이제 aggregate() 안에서 $project 단계를 사용해 기존 필드들을 유지하면서, $add 연산자로 Value1과 Value2의 합을 계산하여 새로운 필드 "Value3"에 저장합니다.

> db.demo291.aggregate(
...  { "$project" : {
...      'Value1' : '$Value1',
...      'Value2' : '$Value2',
...      'Value3' : { '$add' : [ '$Value1', '$Value2' ] }
...  }
...  }
...);

실행 결과

쿼리를 실행하면 Value1(10)과 Value2(50)의 합계인 60이 Value3 필드에 담긴 것을 확인할 수 있습니다.

{ "_id" : ObjectId("5e4c0e1e5d93261e4bc9ea2f"), "Value1" : 10, "Value2" : 50, "Value3" : 60 }

정리

$add 연산자는 배열 형태로 여러 숫자 표현식을 전달받아 그 합계를 반환합니다. 이처럼 $project 단계와 함께 사용하면 기존 데이터를 변경하지 않고도 조회 시점에 계산된 새로운 필드를 손쉽게 추가할 수 있습니다. 참고로 이 방식은 실제 문서에 필드를 영구적으로 저장하는 것이 아니라 집계 결과에만 반영되며, 문서 자체를 업데이트하려면 updateMany()와 집계 파이프라인 업데이트(MongoDB 4.2 이상)를 조합해야 합니다.