Docs Menu
Docs Home
/
MongoDB Atlas
/ /

$convert

이 페이지의 내용

  • 정의
  • 구문
  • 행동
  • 예시

$convert 표현식은 바이너리 데이터 유형을 변환합니다. Kafka 헤더의 바이너리 데이터를 변환하는 데 사용할 수 있습니다.

$convert

$convert 표현식의 프로토타입 형식은 다음과 같습니다.

{
input: "$binDataField",
to: <int, long, double>,
byteOrder: "little"|"big"
}
{
input: "$intLongOrDoubleField",
to: "binData",
byteOrder: "little"|"big"
}
{
input: "$binDataField",
to: "string",
format: <base64, base64url, hex, uuid, utf8>
}
{
input: "$stringField",
to: "binData",
format: <base64, base64url, hex, uuid, utf8>
}

$convert 집계 연산자는 Atlas Stream Processing 버전의 $convert 표현식에서 제공하는 바이너리 데이터 유형을 제외한 데이터 유형 간을 변환합니다.

$convert 표현식은 다음 필드가 있는 문서를 사용합니다.

필드
필요성
설명
input
binData, int, long, doublestring
필수 사항
바이너리 데이터로 변환될 int, long, double,string 형식 또는 int, long, double, string 형식으로 변환되는 바이너리 데이터입니다.
to
binData, int, long, doublestring
필수 사항
input이 변환될 데이터 유형을 지정합니다. int, long, double, string 또는 binData로 지정할 수 있습니다.
byteOrder
작은, 큰
필수 사항

binData 입력 및 출력의 빅 엔디안 바이트 순서 또는 리틀 엔디안 바이트 순서를 지정합니다. 지정하지 않은 경우 기본값은 리틀 엔디안 바이트 순서입니다.

참고

byteOrder 옵션은 입력 또는 출력 binData 해석 방법을 지정하지만 숫자형 유형의 내부 바이트 순서를 제어하지는 않습니다. MongoDB는 Kafka 에코시스템, Java, Python 언어에서 숫자를 바이트로 변환할 때 기본 순서인 빅 엔디안 순서를 사용할 것을 권장합니다.

format
base64, base64url, hex, uuid, utf8
필수 사항

string 입력 및 출력의 최상위 형식 인수를 지정합니다.

참고

$toString 헬퍼 메서드는 기본값 binData 을 utf-8 데이터로 해석하지 않습니다. 기본값은 base64 입니다. utf-8 변환에는 $convert 표현식 을 사용해야 합니다.

$convert.to 값이 int인 경우 binData input 값은 1, 2 또는 4여야 합니다. $convert.to 값이 long인 경우 binData input 값은 1, 2, 4 또는 8여야 합니다. input이 예상치 못한 길이인 경우 오류가 발생합니다. $convert.onError를 구성하여 이 동작을 제어할 수 있습니다.

binData로 변환할 때 int는 4바이트 binData가 되고, long는 8바이트 binData가 되며, double는 8바이트 binData가 됩니다. binData에서 double로 변환할 때 8바이트 입력은 IEEE 754 배정밀도 부동 소수점으로 해석되고 4바이트 입력은 IEEE 754 단정밀도 부동 소수점으로 해석됩니다. MQL은 이중 정밀도 부동 소수점만 지원하므로 단일 정밀도 부동 소수점 값에서 이중 정밀도로 손실 없는 변환을 수행합니다.

binData를 숫자 유형으로 변환:

$convert.to
int
long
double
허용 너비(바이트)
1, 2, 4
1, 2, 4, 8
4, 8
binData 로 해석됩니다.
2의 보수 부호 정수
2의 보수 부호 정수
IEEE 754 단정밀도 또는 배정밀도 부동 소수점

숫자 유형을 binData 형식으로 변환:

입력
int
long
double
출력 폭(바이트)
4
8
8

다음 예시에서는 다음과 같은 바이너리 표기법을 사용하여 binData를 설명합니다.

BinData(0b00000000 00000010)

가장 왼쪽 바이트(00000000)는 가장 낮은 메모리 주소 또는 바이트 배열의 0번째 인덱스에 해당합니다. 마찬가지로 다음과 같은 헥스 표기법을 사용합니다.

BinData(0x0100 000A)

가장 왼쪽 바이트(01)는 가장 낮은 메모리 주소 또는 바이트 배열의 0번째 인덱스에 해당합니다.

다음 문서는 BinData, int, longdouble 표기법에서 값을 변환하는 $convert 표현식의 예시입니다.

{
$convert: {
input: BinData(0b00000000 00000010),
to: “int”,
byteOrder: “big” }
}

결과: 2

{
$convert: {
input: BinData(0b00000001 00000000),
to: “int”,
byteOrder: “big” }
}

결과: 256

{
$convert: {
input: BinData(0b00000001 00000000),
to: “int”,
byteOrder: “little” }
}

결과: 1

{
$convert: {
input: BinData(0x0001 0000),
to: “int”,
byteOrder: “big” }
}

결과: 65536

{
$convert: {
input: BinData(0x0001 0000 0000 0000),
to: “long”,
byteOrder: “big” }
}

결과: 281474976710656

{
$convert: {
input: BinData(0xFFFE7960),
to: “int”,
byteOrder: “big” }
}

결과: -100000

{
$convert: {
input: BinData(0x0001 0000 0000 0000),
to: “int”,
byteOrder: “big” }
}

결과: 오류 - binData 길이는 == "int"인 경우 1,2 또는 4 바이트만 가능합니다.

{
$convert: {
input: BinData(0xC04C CCCD),
to: “double”,
byteOrder: “big” }
}

결과: -3.2000000476837158203125

{
$convert: {
input: BinData(0x0000),
to: “double”,
byteOrder: “big” }
}

결과: 오류 - binData 길이는 == "double"일 때 4 또는 8바이트만 가능합니다.

{
$convert: {
input: true,
to: “binData” }
}

결과: BinData(0x01) // subtype 0

{
$convert: {
input: false,
to: “binData” }
}

결과: BinData(0x00) // subtype 0

{
$convert: {
input: NumberLong(42),
to: “binData”,
byteOrder: “big” }
}

결과: BinData(0x0000 0000 0000 002A) // subtype 0

{
$convert: {
input: NumberLong(42),
to: “binData”,
byteOrder: “little” }
}

결과: BinData(0x2A00 0000 0000 0000) // subtype 0

{
$convert: {
input: { $toInt: “$myNumericField” },
to: “binData”,
byteOrder: “little” }
}

myNumericField가 Int(42), Long(42) 또는 Double(42.0).

결과: BinData(0x2A00 0000)

{
$convert: {
input: “$myIntOrLongField”,
to: “binData”,
byteOrder: “little” }
}

입력값이 Int(42)인 경우:

결과: BinData(0x2A00 0000)

입력이 Long(42)인 경우:

BinData(0x2A00 0000 0000 0000)

돌아가기

애그리게이션 표현식

이 페이지의 내용