AI 에이전트의 경우: 문서 인덱스 https://www.mongodb.com/ko-kr/docs/llms.txt에서 확인할 수 있습니다 — 모든 URL 경로에 .md를 추가하면 모든 페이지의 마크다운 버전을 사용할 수 있습니다.
Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Docs Menu

$convert 표현식(Stream Processing)

$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를 해석하는 방법을 지정하지만 숫자 유형의 내부 바이트 순서는 제어하지 않습니다. 리틀 엔디안 바이트 순서에 대한 특정 사용 사례가 없는 경우 빅 엔디안 바이트 순서를 사용하세요.

format

auto, base64, base64url, hex, uuid, utf8

조건부

string 입력 및 출력의 형식을 지정합니다. input 또는 tostring인 경우 필수입니다. 유효한 값은 다음과 같습니다.

  • auto : binData에서string 로 변환의 경우 UUID 하위 유형 binData에 대한 UUID 표준 문자열을 반환하고, 그렇지 않으면 base64를 반환합니다.

  • base64

  • base64url

  • hex

  • uuid

  • utf8

$toString 헬퍼 메서드는 기본값 으로 format: "auto" 을(를) 사용합니다. UTF-8 변환의 경우 $convert 표현식 format: "utf8" 와 함께 사용합니다.

$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: 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)

이 페이지의 내용