AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

$convert (표현식 연산자)

$convert

값을 지정된 유형으로 변환합니다.

다음 환경에서 호스팅되는 배포에 $convert 사용할 수 있습니다.

  • MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud

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

{
$convert:
{
input: <expression>,
to: <type expression>,
onError: <expression>, // Optional.
onNull: <expression> // Optional.
}
}

The $convert takes a document with the following fields:

필드
설명

input

인수는 유효한 표현식 이면 무엇이든 될 수 있습니다. 표현식에 대한 자세한 내용은 표현식을 참조하세요 .

to

The argument can be any valid expression that resolves to a numeric or string identifier. For available identifiers, see Type Identifiers.

onError

선택 사항입니다. 지원되지 않는 유형 변환을 포함하여 변환 중 오류가 발생했을 때 반환할 값입니다. 인수는 유효한 모든 표현식일 수 있습니다.

지정하지 않으면 오류 발생 시 작업에 오류가 발생하고 중지됩니다.

onNull

선택 사항입니다. input가 null이거나 누락된 경우 반환할 값입니다. 인수는 유효한 표현식일 수 있습니다.

If unspecified, $convert returns null if the input is null or missing.

In addition to $convert, MongoDB provides the following aggregation operators as shorthand when the default "onError" and "onNull" behavior is acceptable:

to 필드는 다음 숫자 및 string 식별자를 허용합니다.

문자열 식별자
숫자 식별자
참고 사항

"double"

1

"문자열"

2

"objectId"

7

"bool"

8

'날짜'

9

"in"

16

"long"

18

"십진수"

19

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

입력 유형
행동

배열

true를 반환합니다

이진 데이터

true를 반환합니다

부울

아니요. 부울 값을 반환합니다.

코드

true를 반환합니다

날짜

true를 반환합니다

10진수

0이 아니면 true를 반환합니다.
0이면 false를 반환합니다.

Double

0이 아니면 true를 반환합니다.
0이면 false를 반환합니다.

Integer

0이 아니면 true를 반환합니다.
0이면 false를 반환합니다.

JavaScript

true를 반환합니다

Long

0이 아니면 true를 반환합니다.
0이면 false를 반환합니다.

최대 키

true를 반환합니다

최소 키

true를 반환합니다

Null

onNull 옵션에 지정된 값을 반환합니다. 기본적으로 null을 반환합니다.

객체

true를 반환합니다

ObjectId

true를 반환합니다

정규 표현식

true를 반환합니다

문자열

true를 반환합니다

타임스탬프

true를 반환합니다

MongoDB의 데이터 유형에 대해 자세히 알아보려면 BSON types를 참조하세요.

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

예시
결과
{ input: true, to: "bool" }

true

{ input: false, to: "bool" }

거짓

{ input: 1.99999, to: "bool" }

true

{ input: Decimal128( "5" ), to: "bool" }

true

{ input: Decimal128( "0" ), to: "bool" }

거짓

{ input: 100, to: "bool" }

true

{
input: ISODate( "2018-03-26T04:38:28.044Z" ),
to: "bool"
}

true

{ input: "hello", to: "bool" }

true

{ input: "false", to: "bool" }

true

{ input: "", to: "bool" }

true

{ input: null, to: "bool" }

null

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

입력 유형
행동

부울

false에 대해 0을(를) 반환합니다.
true에 대해 1을(를) 반환합니다.

Double

잘린 값을 반환합니다.

잘린 double 값은 정수의 최소값과 최대값 내에 속해야 합니다.

최소 정수 값보다 작거나 최대 정수 값보다 큰 double 값은 변환할 수 없습니다.

10진수

잘린 값을 반환합니다.

잘린 10진수 값은 정수의 허용 범위 내에 있어야 합니다.

최소 정수 값보다 작거나 최대 정수 값보다 큰 소숫값은 변환할 수 없습니다.

Integer

아니요. 정수 값을 반환합니다.

Long

긴 값을 정수로 반환합니다.

long 값은 정수의 최소값과 최대값 내에 있어야 합니다.

최소 정수 값보다 작거나 최대 정수 값보다 큰 Long 값은 변환할 수 없습니다.

문자열

문자열의 숫자 값을 정수로 반환합니다.

문자열 값은 기본 10진수여야 하고(예: "-5", "123456") 최솟값과 최댓값 범위 내에 있어야 합니다.

부동소수점, 십진수, 10이 아닌 밑수의 문자열 값(예: "-5.0", "0x6400") 또는 정수의 최소값과 최대값을 벗어나는 값은 변환할 수 없습니다.

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

예시
결과
{ input: true, to: "int" }

1

{ input: false, to: "int" }

0

{ input: 1.99999, to: "int" }

1

{ input: Decimal128( "5.5000" ), to: "int" }

5

{
input: Decimal128( "9223372036000.000" ),
to: "int"
}

오류

{ input: Long( "5000" ), to: "int" }

5000

{ input: Long( "922337203600" ), to: "int" }

오류

{ input: "-2", to: "int" }

-2

{ input: "2.5", to: "int" }

오류

{ input: null, to: "int" }

null

팁

$toInt 연산자를 사용하세요.

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

입력 유형
행동

부울

false에 대해 Decimal128( "0" )을(를) 반환합니다.
true에 대해 Decimal128( "1" )을(를) 반환합니다.

Double

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

10진수

아니요. 소수를 반환합니다.

Integer

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

Long

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

문자열

문자열의 숫자 값을 10진수로 반환합니다.

문자열 값은 10을 기본으로 하는 숫자 값이어야 합니다(예 "-5.5", "123456").

기본 10이 아닌 숫자의 문자열 값은 변환할 수 없습니다(예 "0x6400")

날짜

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

다음 표에는 10진수로 변환하는 몇 가지 예가 나와 있습니다:

예시
결과
{ input: true, to: "decimal" }

Decimal128("1")

{ input: false, to: "decimal" }

Decimal128("0")

{ input: 2.5, to: "decimal" }

Decimal128( "2.50000000000000" )

{ input: Int32( 5 ), to: "decimal" }

Decimal128("5")

{ input: Long( 10000 ), to: "decimal" }

Decimal128("10000")

{ input: "-5.5", to: "decimal" }

Decimal128("-5.5")

{
input: ISODate( "2018-03-26T04:38:28.044Z" ),
to: "decimal"
}

Decimal128("1522039108044")

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

입력 유형
행동

부울

false인 경우 NumberDouble(0)을 반환합니다.
true인 경우 NumberDouble(1)을 반환합니다.

Double

아니요. double 값을 반환합니다.

10진수

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

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

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

Integer

int 값을 double로 반환합니다.

Long

긴 값을 double로 반환합니다.

문자열

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

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

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

날짜

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

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

예시
결과
{ input: true, to: "double" }

1

{ input: false, to: "double" }

0

{ input: 2.5, to: "double" }

2.5

{ input: Int32( 5 ), to: "double" }

5

{ input: Long( "10000" ), to: "double" }

10000

{ input: "-5.5", to: "double" }

-5.5

{ input: "5e10", to: "double" }

50000000000

{
input: ISODate( "2018-03-26T04:38:28.044Z" ),
to: "double"
}

1522039108044

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

입력 유형
행동

부울

false에 대해 0을(를) 반환합니다.
true에 대해 1을(를) 반환합니다.

Double

잘린 값을 반환합니다.

잘린 double 값은 정수의 최소값과 최대값 내에 속해야 합니다.

최소 정수 값보다 작거나 최대 정수 값보다 큰 double 값은 변환할 수 없습니다.

10진수

잘린 값을 반환합니다.

잘린 10진수 값은 정수의 허용 범위 내에 있어야 합니다.

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

Integer

int 값을 길이로 반환합니다.

Long

아니요. 긴 값을 반환합니다.

문자열

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

문자열 값은 기본 10진수 길이여야 하고(예: "-5", "123456") 최솟값과 최댓값 범위 내에 있어야 합니다.

부동소수점, 십진수, 10이 아닌 밑수의 문자열 값(예: "-5.0", "0x6400") 또는 long의 최소값과 최대값을 벗어나는 값은 변환할 수 없습니다.

날짜

Date를 epoch 이후의 밀리초 수로 변환합니다.

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

예시
결과
{ input: true, to: "long" }

Long("1")

{ input: false, to: "long" }

Long("0")

{ input: 2.5, to: "long" }

Long("2")

{ input: Decimal128( "5.5000" ), to: "long" }

Long("5")

{
input: Decimal128( "9223372036854775808.0" ),
to: "long"
}

오류

{ input: Int32( 8 ), to: "long" }

Long("8")

{
input: ISODate( "2018-03-26T04:38:28.044Z" ),
to: "long"
}

Long("1522039108044")

{ input: "-2", to: "long" }

Long("-2")

{ input: "2.5", to: "long" }

오류

{ input: null, to: "long" }

null

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

입력 유형
행동

Double

잘린 double 값이 나타내는 밀리초 수에 해당하는 날짜를 반환합니다.

양수는 1970년 1월 1일 이후의 밀리초 수에 해당합니다.

음수는 1970년 1월 1일 이전의 밀리초 수에 해당합니다.

10진수

잘린 10진수 값이 나타내는 밀리초 수에 해당하는 날짜를 반환합니다.

양수는 1970년 1월 1일 이후의 밀리초 수에 해당합니다.

음수는 1970년 1월 1일 이전의 밀리초 수에 해당합니다.

Long

long 값이 나타내는 밀리초 수에 해당하는 날짜를 반환합니다.

양수는 1970년 1월 1일 이후의 밀리초 수에 해당합니다.

음수는 1970년 1월 1일 이전의 밀리초 수에 해당합니다.

문자열

날짜 문자열에 해당하는 날짜를 반환합니다.

문자열은 다음과 같이 유효한 날짜 문자열이어야 합니다:

  • "2018-03-03"

  • "2018-03-03T12:00:00Z"

  • "2018-03-03T12:00:00+0500"

ObjectId

ObjectId의 타임스탬프에 해당하는 날짜를 반환합니다.

타임스탬프

타임스탬프에 해당하는 날짜를 반환합니다.

다음 표에는 날짜로의 몇 가지 변환 예가 나열되어 있습니다.

예시
결과
{
input: 120000000000.5,
to: "date"
}

ISODate("1973-10-20T21:20:00.000Z")

{
input: Decimal128( "1253372036000.50" ),
to: "date"
}

ISODate("2009-09-19T14:53:56.000Z")

{
input: Long( "1100000000000" ),
to: "date
}

ISODate("2004-11-09T11:33:20.000Z")

{
input: Long( "-1100000000000" ),
to: "date"
}

ISODate("1935-02-22T12:26:40.000Z")

{
input: ObjectId( "5ab9c3da31c2ab715d421285" ),
to: "date"
}

ISODate("2018-03-27T04:08:58.000Z")

{ input: "2018-03-03", to: "date" }

ISODate("2018-03-03T00:00:00.000Z")

{
input: "2018-03-20 11:00:06 +0500",
to: "date"
}

ISODate("2018-03-20T06:00:06.000Z")

{ input: "Friday", to: "date" }

오류

{
input: Timestamp( { t: 1637688118, i: 1 } ),
to: "date"
}

ISODate("2021-11-23T17:21:58.000Z")

팁

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

입력 유형
행동

문자열

길이 24의 16진수 문자열에 대한 ObjectId를 반환합니다.

길이가 24인 16진수 문자열이 아닌 문자열 값은 변환할 수 없습니다.

다음 표에는 날짜로의 몇 가지 변환 예가 나열되어 있습니다.

예시
결과
{
input: "5ab9cbfa31c2ab715d42129e",
to: "objectId"
}

ObjectId("5ab9cbfa31c2ab715d42129e")

{
input: "5ab9cbfa31c2ab715d42129",
to: "objectId"
}

오류

팁

$toObjectId 연산자를 사용하세요.

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

입력 유형
행동

부울

부울 값을 문자열로 반환합니다.

Double

double 값을 문자열로 반환합니다.

10진수

십진수 값을 문자열로 반환합니다.

Integer

정수 값을 문자열로 반환합니다.

Long

긴 값을 문자열로 반환합니다.

ObjectId

ObjectId 값을 16진수 문자열로 반환합니다...

문자열

아니요. 문자열 값을 반환합니다.

날짜

날짜를 문자열로 반환합니다.

다음 표에는 문자열로 변환하는 몇 가지 예가 나와 있습니다:

예시
결과
{ input: true, to: "string" }

"true"

{ input: false, to: "string" }

"false"

{ input: 2.5, to: "string" }

"2.5"

{ input: Int32( 2 ), to: "string" }

"2"

{ input: Long( 1000 ), to: "string" }

"1000"

{
input: ObjectId( "5ab9c3da31c2ab715d421285" ),
to: "string"
}

"5ab9c3da31c2ab715d421285"

{
input: ISODate( "2018-03-27T16:58:51.538Z" ),
to: "string"
}

"2018-03-27T16:58:51.538Z"

{
input: BinData(4, "hn3f"),
to: "string",
format: "base64"
}

'hn3f'

{
input: 10.5,
to: "string",
base: 2,
onError: "invalid"
}

"invalid"

이 페이지의 예시는 sample_mflix 데이터 세트의 데이터를 사용합니다. 이 데이터 세트를 자체 관리형 MongoDB 배포서버에 로드하는 방법에 대한 자세한 내용은 샘플 데이터세트 로드를 참조하세요. 샘플 데이터베이스를 수정한 경우, 이 페이지의 예시를 실행하려면 데이터베이스를 제거하고 다시 생성해야 할 수 있습니다.

16진수 문자열은 정수를 간결하게 표현하는 방법이며, 많은 시스템에서 식별자를 16진수 값으로 교환합니다. 다음 예시 각 영화의 숫자 imdb.id를 16진수 문자열로 변환합니다.

db.movies.aggregate( [
{ $match: { title: { $in: [
"The Godfather",
"Toy Story",
"Metropolis"
] } } },
{ $sort: { title: 1 } },
{
$project: {
_id: 0,
title: 1,
imdbId: "$imdb.id",
hexId: { $convert: { input: "$imdb.id", to: "string", base: 16 } }
}
}
] )
[
{
title: 'Metropolis',
imdbId: 293416,
hexId: '47A28'
},
{
title: 'The Godfather',
imdbId: 68646,
hexId: '10C26'
},
{
title: 'Toy Story',
imdbId: 114709,
hexId: '1C015'
}
]

16진수 문자열을 다시 정수로 변환하려면 base: 16 및 to: "int"를 사용하여 문자열을 $convert에 전달합니다.

다음 집계 작업은 대부분의 문서에서는 double이지만 다른 문서에서는 빈 문자열인 imdb.rating 필드 double로 변환합니다. 또한 일부 문서에서 누락된 metacritic 필드 정수로 변환합니다.$match 단계에서는 각 전환 결과를 보여주는 세 편의 영화를 선택합니다.

db.movies.aggregate( [
{ $match: { title: { $in: [
"The Danish Girl",
"The Godfather",
"Gertie the Dinosaur"
] } } },
{
$project: {
_id: 0,
title: 1,
rating: {
$convert: {
input: "$imdb.rating",
to: "double",
onError: "Error",
onNull: 0
}
},
metacritic: {
$convert: {
input: "$metacritic",
to: "int",
onError: "Error",
onNull: 0
}
}
}
},
{ $sort: { title: 1 } }
] )
[
{
title: 'Gertie the Dinosaur',
rating: 7.3,
metacritic: 0
},
{
title: 'The Danish Girl',
rating: 'Error',
metacritic: 0
},
{
title: 'The Godfather',
rating: 9.2,
metacritic: 100
}
]

The Danish Girl의 경우, imdb.rating의 빈 문자열은 이중으로 변환할 수 없으므로 onError는 "Error"을 반환합니다. Gertie the Dinosaur 및 The Danish Girl의 경우 metacritic이 누락되었으므로 onNull은 0을 반환합니다.

참고

These examples use mongosh. The default types are different in the legacy mongo shell.

이 페이지 평가하기

이 페이지의 내용