Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

$toArray (표현식 연산자)

$toArray

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

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

{
$toArray: <expression>
}

$toArray 유효한 표현식 사용합니다.

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

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

다음 표에서는 다양한 입력 유형에 대한 $toArray 의 동작을 설명합니다.

입력 유형
행동

BinData

숫자 값의 배열 반환합니다.

배열 요소의 숫자 유형은 binData 형식에 따라 달라집니다.

문자열

문자열 내의 내용에 해당하는 배열 반환합니다.

문자열에는 유효한 JSON 배열 나타내는 문자가 포함되어야 합니다.

Null 또는 누락

null을 반환합니다.

문자열을 배열 로 변환할 때 $toArray:

  • 유효한 JSON 구문이 필요합니다. 주석과 후행 쉼표는 허용되지 않습니다.

  • 최상위 값은 배열 이어야 합니다. 문자열이 배열 나타내지 않으면 $toArray 오류가 발생합니다.

  • $oid, $date 또는 Timestamp(...)와 같은 확장 JSON 유형 래퍼를 해석하지 않습니다. 이는 결과에서 문자열 또는 중첩된 객체로 유지됩니다.

binData를 배열 로 변환할 때 $toArray:

  • 하위 유형 9 값이 있는 binData를 허용합니다.

  • PACKED_BIT 벡터를 boolean 배열로 변환합니다.

  • INT8 벡터를 integer 배열로 변환합니다.

  • FLOAT32 벡터를 double 배열로 변환합니다.

$toArray 값과 형식에 따라 숫자 유형을 변환합니다.

  • 부호 있는 32비트 범위 내의 정수는 int이(가) 됩니다.

  • 32비트 범위 벗어나지만 64비트 부호 있는 범위 내의 정수는 long이(가) 됩니다.

  • 부호가 있는 64비트 범위 벗어나는 정수는 double가 되므로 정밀도가 손실될 수 있습니다.

  • 점 또는 지수 표기법이 있는 숫자는 double이(가) 됩니다.

다음 표는 $toArray 을 사용하여 문자열을 배열로 변환하는 예를 보여줍니다.

예시
결과

$toArray: "[1, 2, 3]"

[ 1, 2, 3 ]

$toArray: '["a", "b", "c"]'

[ 'a', 'b', 'c' ]

$toArray: "[]"

[ ]

$toArray: "{}"

오류: 입력이 예상 유형 ' 배열'과 일치하지 않습니다.

$toArray: 123

오류: onError 값이 없는 $convert에서 int에서 배열 로의 변환이 지원되지 않습니다.

참고

입력은 '문자열'이어야 합니다.

$toArray: "123"

오류: 입력이 유효한 JSON 나타내지 않음: 예기치 않은 독립형 값

$toArray: "[{\"$oid\": \"507f1f77bcf86cd799439011\"}]"

[ { '$oid': '507f1f77bcf86cd799439011' } ]

참고

확장 JSON 인식되지 않습니다.

$toArray: null

null

jsonStrings 컬렉션에 문서를 삽입합니다.

db.jsonStrings.insertOne({_id: 1})

다음 작업은 문자열을 배열로 변환합니다.

db.jsonStrings.aggregate([
{
$project: {
_id: 0,
numbers: { $toArray: "[1, 2, 3]" },
documents: { $toArray: '[{"a": 1}, {"b": 2}]' }
}
}
])

결과의 numbers 필드 는 정수 배열 이고 documents 은 내장된 문서의 배열 입니다.

{
numbers: [ 1, 2, 3 ],
documents: [ { a: 1 }, { b: 2 } ]
}

다음 작업은 binData 벡터를 배열로 변환합니다.

db.t.insertMany([
// Empty PACKED_BIT vector converts to empty array
{ v: BinData(9, "EAA=") },
// PACKED_BIT vector converts to bool array
{ v: BinData(9, "EAB/Bw==") },
// INT8 vector converts to int array
{ v: BinData(9, "AwAAAQ==") },
// FLOAT32 vector converts to double array
{ v: BinData(9, "JwCamZk+") },
// FLOAT32 vector with special values converts to [-Infinity, 0, Infinity]
{ v: BinData(9, "JwAAAID/AAAAAAAAgH8=") }
])
db.t.aggregate([
{
$project: {
_id: 0,
original: "$v",
asArray: { $toArray: "$v" }
}
}
])

이 연산은 다음을 반환합니다.

[
{ original: Binary.fromPackedBits(new Uint8Array([])), asArray: [] },
{
original: Binary.fromPackedBits(new Uint8Array([ 127, 7 ])),
asArray: [
false, true, true, true,
true, true, true, true,
false, false, false, false,
false, true, true, true
]
},
{
original: Binary.fromInt8Array(new Int8Array([ 0, 1 ])),
asArray: [ 0, 1 ]
},
{
original: Binary.fromFloat32Array(new Float32Array([ 0.30000001192092896 ])),
asArray: [ 0.30000001192092896 ]
},
{
original: Binary.fromFloat32Array(new Float32Array([ -Infinity, 0, Infinity ])),
asArray: [ -Infinity, 0, Infinity ]
}
]

참고

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

돌아가기

$tanh

이 페이지의 내용