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
/ /

$toObject (표현식 연산자)

$toObject

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

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

{
$toObject: <expression>
}

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

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

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

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

입력 유형
행동

문자열

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

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

Null 또는 누락

null을 반환합니다.

문자열을 객체 로 변환할 때 $toObject:

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

  • 최상위 값이 객체 여야 합니다. 문자열이 객체 나타내지 않으면 $toObject 오류가 발생합니다.

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

  • 객체 에 중복된 필드 이름이 포함된 경우 마지막 값을 유지합니다. 동일한 필드 에 대한 이전 값은 삭제됩니다.

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

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

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

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

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

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

예시
결과

$toObject: "{\"a\": 1, \"b\": 2}"

{ a: 1, b: 2 }

$toObject: "{}"

{ }

$toObject: "[]"

오류: 입력이 예상 유형 ' 객체'와 일치하지 않습니다.

$toObject: "123"

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

$toObject: "{\"nam\\u0000e\": \"foo\"}"

오류: 입력이 유효한 JSON 나타내지 않음: 잘못 포함된 null 바이트

참고

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

$toObject: "{\"name\": \"fo\\u0000o\"}"

{ name: 'fox00o' }

$toObject: "{\"a\": 1, \"b\": 2, \"a\": 3}"

{ a: 3, b: 2 }

참고

동일한 필드 의 마지막 값이 유지됩니다.

$toObject: "{\"foo\": null}"

{ foo: null }

$toObject: "{\"foo\": false}"

{ foo: false }

$toObject: "{\"__proto__\": {\"foo\": null}}"

{ ['__proto__']: { foo: null } }

$toObject: "{\"foo\": \"NaN\"}"

{ foo: 'NaN' }

$toObject: "{\"foo\": 123}"

{ foo: 123 }

$toObject: "{\"foo\": 4294967296}"

{ foo: Long('4294967296') }

참고

숫자가 32비트 부호 있는 범위 밖에 있으므로 long으로 변환됩니다.

$toObject: "{\"foo\": 1.123123}"

{ foo: 1.123123 }

$toObject: "{\"foo\": 1.2e+3}"

{ foo: 1200 }

$toObject: "{\"largePos\": 18446744073709551615}"

{ largePos: 18446744073709552000 }

참고

숫자가 64비트 부호 있는 범위 밖에 있으므로 정밀도 손실이 있는 이중으로 변환됩니다.

$toObject: "{\"largeNeg\": -18446744073709551615}"

{ largeNeg: -18446744073709552000 }

참고

숫자가 64비트 부호 있는 범위 밖에 있으므로 정밀도 손실이 있는 이중으로 변환됩니다.

$toObject: null

null

필드 에 저장된 문자열을 사용하여 컬렉션 만듭니다.

db.jsonStrings.insertOne({
_id: 1,
config: '{"feature": true, "threshold": 10}'
})

다음 집계 config 의 문자열을 객체 로 변환합니다.

db.jsonStrings.aggregate([
{
$project: {
_id: 0,
parsedConfig: { $toObject: "$config" }
}
}
])

이 연산은 parsedConfig 이 부울과 정수 값이 있는 중첩 문서 인 문서 반환합니다.

{ parsedConfig: { feature: true, threshold: 10 } }

참고

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

돌아가기

$toLong

이 페이지의 내용