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

MongoDB에서 문자열 값의 합계를 계산하는 방법

MongoDB에서 문자열 합계 계산하기

MongoDB에서 문자열로 저장된 숫자 값의 합계를 구하려면 aggregate() 메서드와 함께 $toInt 연산자를 사용하면 됩니다. 문자열 형태의 가격 데이터를 숫자로 변환한 후 $sum으로 더하는 방식입니다.

먼저 예제에 사용할 컬렉션을 생성하고 문서를 삽입해 보겠습니다.

> db.demo71.insertOne({"Price":"20"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e29af210912fae76b13d76e")
}
> db.demo71.insertOne({"Price":"50"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e29af240912fae76b13d76f")
}
> db.demo71.insertOne({"Price":"20"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e29af270912fae76b13d770")
}
> db.demo71.insertOne({"Price":"10"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e29af2d0912fae76b13d771")
}

저장된 문서 확인하기

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

> db.demo71.find();

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

{ "_id" : ObjectId("5e29af210912fae76b13d76e"), "Price" : "20" }
{ "_id" : ObjectId("5e29af240912fae76b13d76f"), "Price" : "50" }
{ "_id" : ObjectId("5e29af270912fae76b13d770"), "Price" : "20" }
{ "_id" : ObjectId("5e29af2d0912fae76b13d771"), "Price" : "10" }

Price 필드가 따옴표로 묶여 있는 것을 볼 수 있듯이, 값이 문자열 타입으로 저장되어 있습니다.

문자열 합계를 구하는 집계 쿼리

다음은 MongoDB에서 문자열 값의 합계를 계산하는 쿼리입니다. $group 단계에서 _id를 null로 지정해 전체 문서를 하나의 그룹으로 묶고, $toInt로 Price 필드를 정수로 변환한 뒤 $sum으로 합산합니다.

> db.demo71.aggregate([
... {
...     $group: {
...        _id: null,
...        TotalPrice: {
...            $sum: {
...               $toInt: "$Price"
...            }
...         }
...     }
... }
... ]);

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

{ "_id" : null, "TotalPrice" : 100 }

결과를 보면 문자열로 저장된 가격들(20 + 50 + 20 + 10)이 정상적으로 변환되어 합계 100이 출력된 것을 확인할 수 있습니다.

참고 사항

$toInt 연산자는 MongoDB 4.0 이상에서 사용할 수 있습니다. 만약 변환할 수 없는 문자열이 포함되어 있으면 오류가 발생하므로, 데이터에 유효하지 않은 값이 섞여 있을 가능성이 있다면 $convert 연산자에 onError 옵션을 사용하는 것이 안전합니다. 또한 소수점이 포함된 값이라면 $toDouble을 사용하는 것이 적절합니다.