문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

$toDouble (애그리게이션)

이 페이지의 내용

  • 정의
  • 행동
  • 예제
$toDouble

값을 double로 변환합니다. 값을 double로 변환할 수 없는 경우 $toDouble 오류가 발생합니다. 값이 null이거나 누락된 경우 $toDouble 은 null을 반환합니다.

$toDouble 의 구문은 다음과 같습니다:

{
$toDouble: <expression>
}

$toDouble 는 모든 유효한 표현식을 사용합니다.

$toDouble 은 다음 $convert 표현식의 약어입니다.

{ $convert: { input: <expression>, to: "double" } }

다음 표에는 더블로 변환할 수 있는 입력 유형이 나열되어 있습니다.

입력 유형
행동
부울
false인 경우 0를 반환합니다.
true인 경우 1를 반환합니다.
더블
아니요. 더블 값을 반환합니다.
10진수

10진수 값을 더블로 반환합니다.

10진수 값은 더블의 최소값과 최대값 내에 속해야 합니다.

값이 최소 더블 값보다 작거나 최대 더블 값보다 큰 10진수 값은 변환할 수 없습니다.

Integer
int 값을 더블로 반환합니다.
Long
긴 값을 더블로 반환합니다.
문자열

문자열의 숫자 값을 더블로 반환합니다.

문자열 값은 10진수 숫자 값 (예: "-5.5" "123456") 이어야 하며, 더블의 최소값과 최대값 내에 속합니다.

10진수가 아닌 숫자 형태의 문자열 값(예: "0x6400") 이나 더블의 최소값과 최대값을 벗어나는 값은 변환할 수 없습니다.

날짜
날짜 값에 해당하는 epoch 이후의 밀리초 수를 반환합니다.

다음 표에는 더블로 변환하는 몇 가지 예가 나와 있습니다:

예제
결과
$toDouble: true
1
$toDouble: false
0
$toDouble: 2.5
2.5
$toDouble: NumberInt(5)
5
$toDouble: NumberLong(10000)
10000
$toDouble: "-5.5"
-5.5
$toDouble: ISODate("2018-03-27T05:04:47.890Z")
1522127087890

다음 문서를 사용하여 컬렉션 weather를 생성합니다.

db.weather.insertMany( [
{ _id: 1, date: new Date("2018-06-01"), temp: "26.1C" },
{ _id: 2, date: new Date("2018-06-02"), temp: "25.1C" },
{ _id: 3, date: new Date("2018-06-03"), temp: "25.4C" },
] )

다음 집계 작업은 weather 컬렉션에 대한 temp 값을 파싱하고 더블 값으로 변환합니다.

// Define stage to add degrees field with converted value
tempConversionStage = {
$addFields: {
degrees: { $toDouble: { $substrBytes: [ "$temp", 0, 4 ] } }
}
};
db.weather.aggregate( [
tempConversionStage,
] )

이 작업은 다음 문서를 반환합니다.

{ "_id" : 1, "date" : ISODate("2018-06-01T00:00:00Z"), "temp" : "26.1C", "degrees" : 26.1 }
{ "_id" : 2, "date" : ISODate("2018-06-02T00:00:00Z"), "temp" : "25.1C", "degrees" : 25.1 }
{ "_id" : 3, "date" : ISODate("2018-06-03T00:00:00Z"), "temp" : "25.4C", "degrees" : 25.4 }

참고

변환 작업에 오류가 발생하면 애그리게이션 작업이 중지되고 오류가 발생합니다. 이 동작을 재정의하려면 $convert 를 대신 사용하세요.

← $toDecimal(집계)

이 페이지의 내용