개요
이 가이드 에서는 MongoDB 문서와 상호 작용할 때 확장 JSON 데이터 형식을 사용하는 방법을 학습 수 있습니다.
JSON 객체, 배열, 숫자, 문자열, 부울 및 null 값을 나타내는 사람이 읽을 수 있는 데이터 형식입니다. 이 형식은 MongoDB 데이터를 저장 데 사용하는 형식인 BSON 데이터 유형의 하위 집합만 지원합니다. 확장 JSON 형식은 더 많은 BSON 유형을 지원하며, BSON 의 각 유형에 직접적으로 대응하는 필드 유형 정보를 나타내기 위해 '$
' 접두사가 붙은 예약된 키 설정하다 정의합니다.
확장 JSON 형식
MongoDB 확장 JSON BSON 데이터를 나타내는 두 가지 문자열 형식을 제공합니다. 각 형식은 JSON RFC 를 준수하며 특정 사용 사례를 충족합니다.
다음 표에서는 각 확장 JSON 형식에 대해 설명합니다.
이름 | 설명 |
---|---|
표준 또는 확장 | A string format that avoids loss of BSON type information during data conversions. This format prioritizes type preservation at the loss of human-readability and
interoperability with older formats. |
완화 모드 | A string format that describes BSON documents with some type information loss. This format prioritizes human-readability and interoperability at the loss of
certain type information. |
JSON, BSON 및 확장 JSON에 대해 자세히 학습하려면 JSON 및 BSON 리소스와 확장 JSON MongoDB Server 수동 항목을 참조하세요.
확장 JSON 예시
다음 예시 확장 JSON 형식으로 표시된 ObjectId
, 날짜 및 긴 숫자 필드 포함된 문서 보여줍니다. Canonical 또는 Relaxed Mode 탭 선택하여 각 확장 JSON 형식의 샘플 문서 봅니다.
{ "_id": { "$oid": "573a1391f29313caabcd9637" }, "createdAt": { "$date": { "$numberLong": "1601499609" }}, "numViews": { "$numberLong": "36520312" } }
{ "_id": { "$oid": "573a1391f29313caabcd9637" }, "createdAt": { "$date": "2020-09-30T18:22:51.648Z" }, "numViews": 36520312 }
확장 JSON 쓰기
toRelaxedExtendedJSON()
및 toCanonicalExtendedJSON()
메서드를 사용하여 BSON 문서 객체 에서 확장 JSON 문자열을 쓰기 (write) 수 있습니다.
다음 예시 BSON 문서 완화 및 표준 확장 JSON 형식으로 출력합니다.
$doc = [ 'foo' => [1, 2], 'bar' => ['hello' => 'world'], 'code' => new MongoDB\BSON\Javascript('function x() { return 1; }', []), 'date' => new DateTime('2024-07-20 10:30:00'), ]; echo 'Relaxed format: ' , MongoDB\BSON\Document::fromPHP($doc)->toRelaxedExtendedJSON(), PHP_EOL; echo 'Canonical format: ' , MongoDB\BSON\Document::fromPHP($doc)->toCanonicalExtendedJSON(), PHP_EOL;
Relaxed format: { "foo" : [ 1, 2 ], "bar" : { "hello" : "world" }, "code" : { "$code" : "function x() { return 1; }", "$scope" : { } }, "date" : { } } Canonical format: { "foo" : [ { "$numberInt" : "1" }, { "$numberInt" : "2" } ], "bar" : { "hello" : "world" }, "code" : { "$code" : "function x() { return 1; }", "$scope" : { } }, "date" : { } }
확장 JSON 읽기
확장 JSON PHP 배열 또는 객체 로 변환하는 json_decode()
메서드를 호출하여 확장 JSON 문자열을 PHP 값으로 읽을 수 있습니다. 다음 인수를 json_decode()
에 전달합니다.
읽을 확장 JSON 문자열입니다.
배열 값을 반환할지 여부를 나타내는 부울 값입니다.
false
로 설정하다 하면 메서드는 객체 값을 반환합니다.
다음 예시 확장 JSON 문자열 값을 PHP 배열 로 변환합니다.
$ejsonStr = '{ "foo": [ { "$numberInt": "1" }, { "$numberInt": "2" } ], "bar": { "hello": "world" }, "code": { "$code": "function x() { return 1; }", "$scope": {} }, "bin": { "$binary": { "base64": "AQIDBA==", "subType": "00" } } }'; $decodedJson = json_decode($ejsonStr, true); print_r($decodedJson);
Array ( [foo] => Array ( [0] => Array ( [$numberInt] => 1 ) [1] => Array ( [$numberInt] => 2 ) ) [bar] => Array ( [hello] => world ) [code] => Array ( [$code] => function x() { return 1; } [$scope] => Array ( ) ) [bin] => Array ( [$binary] => Array ( [base64] => AQIDBA== [subType] => 00 ) ) )
API 문서
이 페이지에서 설명하는 메서드에 대해 자세히 학습 다음 PHP 확장 API 문서를 참조하세요.