정의
$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 를 사용하여 문자열을 객체로 변환하는 예를 보여줍니다.
예시 | 결과 |
|---|---|
| { a: 1, b: 2 } |
| { } |
| 오류: 입력이 예상 유형 ' 객체'와 일치하지 않습니다. |
| 오류: 입력이 유효한 JSON 나타내지 않음: 예기치 않은 독립형 값 |
| 오류: 입력이 유효한 JSON 나타내지 않음: 잘못 포함된 null 바이트 참고문자열에는 유효한 객체 나타내는 문자가 포함되어야 합니다. |
| { name: 'fox00o' } |
| { a: 3, b: 2 } 참고동일한 필드 의 마지막 값이 유지됩니다. |
| { foo: null } |
| { foo: false } |
| { ['__proto__']: { foo: null } } |
| { foo: 'NaN' } |
| { foo: 123 } |
| { foo: Long('4294967296') } 참고숫자가 32비트 부호 있는 범위 밖에 있으므로 long으로 변환됩니다. |
| { foo: 1.123123 } |
| { foo: 1200 } |
| { largePos: 18446744073709552000 } 참고숫자가 64비트 부호 있는 범위 밖에 있으므로 정밀도 손실이 있는 이중으로 변환됩니다. |
| { largeNeg: -18446744073709552000 } 참고숫자가 64비트 부호 있는 범위 밖에 있으므로 정밀도 손실이 있는 이중으로 변환됩니다. |
| 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 를 대신 사용하세요.