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 집계 연산자 는 $convert 표현식 의 Atlas Stream Processing 버전에서 제공되는 바이너리 데이터 유형을 제외한 데이터 유형 간을 변환합니다.

$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번째 인덱스 에 해당합니다. 마찬가지로 다음과 같은 16진수 표기법을 사용합니다.

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” }
}

Result: BinData(0x01) // 하위 유형 0

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

Result: BinData(0x00) // 하위 유형 0

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

Result: BinData(0x0000 0000 0000 002A) // subtype 0

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

Result: BinData(0x2A00 0000 0000 0000) // 하위 유형 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)

돌아가기

애그리게이션 표현식

이 페이지의 내용