AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.

확장 JSON

이 가이드 에서는 MongoDB 문서와 상호 작용할 때 확장 JSON 데이터 형식을 사용하는 방법을 학습 수 있습니다.

JSON 객체, 배열, 숫자, 문자열, 부울 및 null 값을 나타내는 사람이 읽을 수 있는 데이터 형식입니다. 이 형식은 MongoDB 데이터를 저장 데 사용하는 형식인 BSON 데이터 유형의 하위 집합만 지원합니다. 확장 JSON 형식은 더 많은 BSON 유형을 지원하며, BSON 의 각 유형에 직접적으로 대응하는 필드 유형 정보를 나타내기 위해 '$' 접두사가 붙은 예약된 키 설정하다 를 정의합니다.

JSON, BSON 및 확장 JSON에 대해 자세히 학습하려면 JSON 및 BSON 리소스와 확장 JSON MongoDB Server 수동 항목을 참조하세요.

MongoDB 확장 JSON BSON 데이터를 나타내는 문자열 형식을 제공합니다. 각 형식은 JSON RFC 를 준수하며 특정 사용 사례를 충족합니다.

다음 표에서는 각 확장 JSON 형식에 대해 설명합니다.

이름
설명

확장 또는 표준

데이터 변환 시 BSON 유형 정보의 손실을 방지하는 string 형식입니다.
이 형식은 가독성 및 기존 형식과의 상호 운용성을 포기하고 유형 보존을 우선시합니다. Ruby 드라이버는 기본적으로 이 모드를 사용합니다.

완화

일부 유형 정보 손실이 있는 BSON 문서를 설명하는 string 형식입니다.
이 형식은 특정 유형 정보가 손실될 경우 사람의 가독성과 상호 운용성을 우선시합니다. 이 모드를 지정하려면 mode 옵션으로 :relaxed 을(를) 전달합니다.

Shell

MongoDB Shell에서 사용되는 구문과 일치하는 string 형식입니다.
이 형식은 유형을 나타내기 위해 JavaScript 함수를 자주 사용하는 MongoDB Shell과의 호환성을 우선시합니다. 이 모드를 지정하려면 mode 옵션으로 :legacy 을(를) 전달합니다.

참고

Ruby 운전자 문자열에서 $uuid 확장 JSON 유형을 바이너리 하위 유형 4의 BSON::Binary 객체 로 구문 분석합니다. $uuid 필드 분석에 대한 자세한 내용은 확장 JSON 사양의 $uuid 필드 구문 분석을 위한 특수 규칙 섹션을 참조하세요.

다음 예시에서는 각 확장 JSON 형식으로 표시되는 ObjectId, 날짜, 긴 숫자 필드가 포함된 문서를 보여 줍니다. 원하는 형식의 예시 탭을 클릭합니다.

{ "_id": { "$oid": "573a1391f29313caabcd9637" }, "createdAt": { "$date": { "$numberLong": "1601499609" }}, "numViews": { "$numberLong": "36520312" }}

BSON::ExtJSON.parse 메서드를 호출하여 확장 JSON 문자열을 Ruby 배열 로 읽을 수 있습니다. 이 메서드는 확장 JSON 문자열을 구문 분석하고 데이터가 포함된 배열 반환합니다.

다음 예시 parse 메서드를 사용하여 확장 JSON 문자열을 해시 배열 로 읽는 방법을 보여 줍니다.

require 'bson' ex_json = '''[ {"foo": [1, 2]}, {"bar": {"hello": "world"}}, {"code": { "$scope": {}, "$code": "function x() { return 1; }" }}, {"bin": { "$type": "80", "$binary": "AQIDBA==" }} ]''' doc = BSON::ExtJSON.parse(ex_json) puts doc.classputs doc

경고

JSON을 BSON으로 변환하기 전에 신뢰할 수 없는 입력을 검증하세요

JSON string을 BSON으로 변환하고 그 결과 BSON을 쿼리, 업데이트 또는 명령에 사용하면, 공격자가 연산자 또는 예상치 못한 필드 값을 삽입하여 작업의 의미를 변경할 수 있습니다. 이 위험은 JSON이 사용자, API 요청 또는 다른 신뢰할 수 없는 소스에서 유래할 때 가장 높습니다.

변환 전 입력 유효성 검사에 대해 자세히 알아보려면 JSON을 BSON으로 변환하기 전에 신뢰할 수 없는 입력 유효성 검사를 참조하세요.

as_extended_json 메서드를 사용하여 확장 JSON 문자열을 쓰기 (write) 수 있습니다. 기본값 으로 이 메서드는 확장 JSON 문자열을 표준 형식으로 반환하지만 mode 인수를 전달하여 완화 형식 또는 레거시 형식을 지정할 수 있습니다.

참고

레거시 버전

레거시 형식 옵션은 Ruby 운전자 현재의 완화 및 표준 형식보다 앞선 MongoDB 확장 JSON v1 형식으로 BSON 유형을 직렬화하도록 지시합니다.

자세한 내용은 서버 매뉴얼의 MongoDB 확장 JSON v1 페이지를 참조하세요.

as_extended_json 메서드는 Array 및 Hash를 포함한 여러 핵심 및 표준 라이브러리 유형에 사용할 수 있습니다. 다음 예시 해시 배열 에서 표준, 완화 및 레거시 형식의 확장 JSON 문자열을 생성합니다.

require 'bson' hash_array = [ { "foo" => [1, 2] }, { "bin" => BSON::Binary.new("\x01\x02\x03\x04", :user) }, { "number" => BSON::Int64.new(42) }] json_string_canonical = hash_array.as_extended_jsonjson_string_relaxed = hash_array.as_extended_json(mode: :relaxed)json_string_legacy = hash_array.as_extended_json(mode: :legacy) puts "canonical:\t #{json_string_canonical}"puts "relaxed:\t #{json_string_relaxed}"puts "legacy:\t\t #{json_string_legacy}"

자세한 내용은 다음 리소스를 참조하세요.