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

MongoDB 집계 프레임워크의 $abs 연산자로 절댓값 구하는 방법

MongoDB에서 숫자 필드의 절댓값(absolute value)을 구해야 할 때는 집계 프레임워크(Aggregation Framework)의 $abs 연산자를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 컬렉션 생성부터 $abs 연산자를 활용한 절댓값 조회까지 단계별로 살펴보겠습니다.

1. 테스트용 컬렉션 생성 및 문서 삽입

먼저 예제에 사용할 컬렉션을 만들고 문서를 삽입합니다. 양수, 음수, 0 등 다양한 값을 포함시켰습니다.

> db.absoluteValueDemo.insert({"Value":98});
WriteResult({ "nInserted" : 1 })
> db.absoluteValueDemo.insert({"Value":-100});
WriteResult({ "nInserted" : 1 })
> db.absoluteValueDemo.insert({"Value":0});
WriteResult({ "nInserted" : 1 })
> db.absoluteValueDemo.insert({"Value":-9999990});
WriteResult({ "nInserted" : 1 })

2. 저장된 문서 확인하기

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

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

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

{ "_id" : ObjectId("5ca271f56304881c5ce84b9a"), "Value" : 98 }
{ "_id" : ObjectId("5ca271fa6304881c5ce84b9b"), "Value" : -100 }
{ "_id" : ObjectId("5ca271fe6304881c5ce84b9c"), "Value" : 0 }
{ "_id" : ObjectId("5ca2720f6304881c5ce84b9d"), "Value" : -9999990 }

현재 Value 필드에는 음수 값(-100, -9999990)이 그대로 저장되어 있는 것을 확인할 수 있습니다.

3. $abs 연산자로 절댓값 조회하기

이제 집계 프레임워크의 $project 스테이지와 $abs 연산자를 조합하여 각 문서의 절댓값을 계산해 보겠습니다.

> db.absoluteValueDemo.aggregate({ $project: { AbsoluteValue: { $abs: '$Value' } }});

실행 결과는 다음과 같습니다.

{ "_id" : ObjectId("5ca271f56304881c5ce84b9a"), "AbsoluteValue" : 98 }
{ "_id" : ObjectId("5ca271fa6304881c5ce84b9b"), "AbsoluteValue" : 100 }
{ "_id" : ObjectId("5ca271fe6304881c5ce84b9c"), "AbsoluteValue" : 0 }
{ "_id" : ObjectId("5ca2720f6304881c5ce84b9d"), "AbsoluteValue" : 9999990 }

결과 분석

출력 결과를 보면 원래 음수였던 값들이 모두 양수로 변환된 것을 알 수 있습니다.

  • -100 → 100: 음수는 부호가 제거되어 양수로 반환됩니다.
  • -9999990 → 9999990: 큰 숫자 역시 동일하게 처리됩니다.
  • 98 → 98, 0 → 0: 양수와 0은 원래 값이 그대로 유지됩니다.

정리

MongoDB에서 절댓값을 구하는 핵심은 $abs 연산자입니다. $project 스테이지 안에서 { $abs: '$필드명' } 형태로 지정하면 해당 필드의 절댓값이 새로운 필드로 출력됩니다. 데이터 정규화, 거리 계산, 오차 분석 등 부호와 무관하게 수치의 크기만 비교해야 하는 상황에서 매우 유용하게 활용할 수 있습니다.