문서 메뉴
문서 홈
/
MongoDB 매뉴얼
/ /

MongoDB 확장 JSON(v2)

이 페이지의 내용

  • MongoDB 확장 JSON v2 사용법
  • BSON 데이터 유형 및 관련 표현
  • 예제

중요

명확화

다음 페이지에서는 MongoDB 확장 JSON v2 에 대해 설명합니다. 레거시 MongoDB 확장 JSON v1 에 대한 설명은 MongoDB 확장 JSON(v1)을 참조하세요.

mongosh에서 지원되는 데이터 유형은 mongosh 데이터 유형을 참조하세요.

JSONBSON에서 지원하는 유형의 하위 집합만 직접 나타낼 수 있습니다. 유형 정보를 보존하기 위해 MongoDB는 JSON 형식에 다음 확장을 추가합니다.

  • 표준 모드
    가독성과 상호 운용성을 포기하고 유형 보존을 강조하는 문자열 형식입니다. 즉, 정규에서 BSON으로 변환하면 일반적으로 특정 경우를 제외하고는 유형 정보를 보존합니다.
  • 완화 모드
    유형 보존을 포기하고 가독성과 상호 운용성을 강조하는 문자열 형식입니다. 즉, 완화된 형식에서 BSON으로 변환하면 유형 정보가 손실될 수 있습니다.

두 형식 모두 JSON RFC를 준수하며 다양한 MongoDB 드라이버 및 도구로 구문 분석될 수 있습니다.

다음 드라이버는 확장 JSON v2.0을 사용합니다.

  • C

  • C++

  • Go

  • 자바

  • 마디

  • PHPC

  • Python

  • Scala

레거시 MongoDB 확장 JSON v1을 사용하는 C# 및 Ruby의 경우 MongoDB Extended JSON (v1)을 참조하세요.

버전 4.2부터:

바이너리
변경 사항
확장 JSON v2.0(표준 모드) 형식을 사용합니다.

확장 JSON v2.0 사용 (Canonical 모드) 메타데이터의 형식입니다. 확장 JSON v2.0 을(를) 지원하는 mongorestore 버전 4.2 이상이 필요합니다. (Canonical 모드 또는 Relaxed) 형식입니다.

일반적으로 mongodumpmongorestore의 해당 버전을 사용합니다. 즉, 특정 버전의 mongodump로 생성된 데이터 파일을 복원하려면 해당 버전의 mongorestore를 사용하세요.

Creates output data in Extended JSON v2.0 (Relaxed mode) by default.
Creates output data in Extended JSON v2.0 (Canonical mode) if used with --jsonFormat.
Expects import data to be in Extended JSON v2.0 (either Relaxed or Canonical mode) by default.
Can recognize data that is in Extended JSON v1.0 format if the option --legacy is specified.

일반적으로 mongoexportmongoimport의 버전이 일치해야 합니다. 즉, mongoexport에서 생성된 데이터를 가져오려면 mongoimport의 해당 버전을 사용해야 합니다.

다음은 몇 가지 일반적인 BSON 데이터 유형과 표준완화 모드에서의 관련 표현입니다.

전체 목록은 https://github.com/mongodb/specations/lob/master/source/extended-json.rst#conversion-table을 참조하세요.

Array

표준
완화
[ <elements> ]
<Same as Canonical>

배열 요소는 다음과 같습니다:

  • <elements>

    • 배열 요소는 확장 JSON을 사용합니다.

    • 빈 배열을 지정하려면 [ ] 내용을 생략합니다.

Binary

표준
완화
{ "$binary":
{
"base64": "<payload>",
"subType": "<t>"
}
}
<Same as Canonical>

여기서 값은 다음과 같습니다.

  • "<payload>"

    • Base64로 인코딩된('=' 패딩 포함) 페이로드 문자열.

  • "<t>"

    • BSON 바이너리 하위 유형에 해당하는 1자리 또는 2자리의 16진수 문자열입니다. 사용 가능한 하위 유형에 대해서는 확장 bson 문서 http://bsonspec.org/spec.html을 참조하세요.

Date

1970년에서 9999년 사이의 날짜:

표준
완화
{"$date": {"$numberLong": "<millis>"}}
{"$date": "<ISO-8601 Date/Time Format>"}

1970년 이전 또는 9999년 이후 날짜:

표준
완화
{"$date": {"$numberLong": "<millis>"}}
<Same as Canonical>

여기서 값은 다음과 같습니다.

  • "<millis>"

    • 부호 있는 64비트 정수(문자열)입니다. 이 값은 에포크를 기준으로 밀리초를 나타냅니다.

  • "<ISO-8601 Date/Time Format>"

    • 문자열로 표현한 ISO-8601 인터넷 날짜/시간 형식의 날짜.

    • 날짜/시간의 최대 시간 정밀도는 밀리초입니다.

      • 분수 초는 분수 부분이 0이 아닌 경우 소수점 이하 3자리까지 정확하게 표시됩니다.

      • 소수부가 0인 경우 소수 자릿수는 반드시 생략해야 합니다.

Decimal128

버전 3.4에 새로 추가되었습니다.

표준
완화
{ "$numberDecimal": "<number>" }
<Same as Canonical>

여기서 값은 다음과 같습니다.

Document

표준
완화
{ <content> }
<Same as Canonical>

문서 내용은 다음과 같습니다:

  • <content>

    • 확장 JSON을 사용하는 이름:값 쌍입니다.

    • 빈 문서를 지정하려면 { } 내용을 생략하세요.

Double

유한한 수의 경우:

표준
완화
{"$numberDouble": "<decimal string>" }
<non-integer number>

무한한 수 또는 NAN의 경우:

표준
완화
{"$numberDouble": <"Infinity"|"-Infinity"|"NaN"> }
<Same as Canonical>

여기서 값은 다음과 같습니다.

  • "<decimal string>"

    • 부호 있는 64비트 부동소수점(문자열)입니다.

  • <non-integer number>

    • 정수가 아닌 숫자입니다. 정수는 double이 아닌 정수로 구문 분석됩니다.

Int64

표준
완화
{ "$numberLong": "<number>" }
<integer>

여기서 값은 다음과 같습니다.

  • "<number>"

    • 부호 있는 64비트 정수(문자열)입니다.

  • <integer>

    • 부호 있는 64비트 정수입니다.

Int32

표준
완화
{ "$numberInt": "<number>" }
<integer>

여기서 값은 다음과 같습니다.

  • "<number>"

    • 부호 있는 32비트 정수(문자열)입니다.

  • <integer>

    • 부호 있는 32비트 정수입니다.

MaxKey

표준
완화
{ "$maxKey": 1 }
<Same as Canonical>

MaxKey BSON 데이터 유형은 다른 모든 유형보다 높은 비교율을 보입니다. BSON types에 대한 비교 순서에 대한 자세한 내용은 Comparison/Sort Order를 참조하세요.

MinKey

표준
완화
{ "$minKey": 1 }
<Same as Canonical>

MinKey BSON 데이터 유형은 비교 순위가 다른 모든 유형보다 낮습니다. BSON 유형의 비교 순서에 대한 자세한 내용은 비교/순서 정렬을 참조하세요.

ObjectId

표준
완화
{ "$oid": "<ObjectId bytes>" }
<Same as Canonical>

여기서 값은 다음과 같습니다.

  • "<ObjectId bytes>"

    • 객체 ID 바이트를 나타내는 24자의 빅엔디안 16진수 문자열입니다.

Regular Expression

표준
완화
{ "$regularExpression":
{
"pattern": "<regexPattern>",
"options": "<options>"
}
}
<Same as Canonical>

여기서 값은 다음과 같습니다.

  • "<regexPattern>"

    • 정규 표현식 패턴에 해당하는 문자열입니다. 문자열에는 유효한 JSON 문자와 이스케이프되지 않은 큰따옴표(") 문자가 포함될 수 있지만 이스케이프되지 않은 슬래시(/) 문자는 포함될 수 없습니다.

  • "<options>"

    • BSON 정규식 옵션을 지정하는 문자열입니다. 옵션을 알파벳 순서로 지정해야 합니다. 지원되는 옵션에 대한 자세한 내용은 $options을 참조하세요.

Timestamp

표준
완화
{"$timestamp": {"t": <t>, "i": <i>}}
<Same as Canonical>

여기서 값은 다음과 같습니다.

  • <t>

    • 에포크 이후 초에 대한 양의 정수입니다.

  • <i>

    • 증분에 대한 양의 정수입니다.

필드 이름 예시
표준 형식
편안한 형식
"_id:"
{"$oid":"5d505646cf6d4fe581014ab2"}
{"$oid":"5d505646cf6d4fe581014ab2"}
"arrayField":
["hello",{"$numberInt":"10"}]
["hello",10]
"dateField":
{"$date":{"$numberLong":"1565546054692"}}
{"$date":"2019-08-11T17:54:14.692Z"}
"dateBefore1970":
{"$date":{"$numberLong":"-1577923200000"}}
{"$date":{"$numberLong":"-1577923200000"}}
"decimal128Field":
{"$numberDecimal":"10.99"}
{"$numberDecimal":"10.99"}
"documentField":
{"a":"hello"}
{"a":"hello"}
"doubleField":
{"$numberDouble":"10.5"}
10.5
"infiniteNumber"
{"$numberDouble":"Infinity"}
{"$numberDouble":"Infinity"}
"int32field":
{"$numberInt":"10"}
10
"int64Field":
{"$numberLong":"50"}
50
"minKeyField":
{"$minKey":1}
{"$minKey":1}
"maxKeyField":
{"$maxKey":1}
{"$maxKey":1}
"regexField":
{"$regularExpression":{"pattern":"^H","options":"i"}}
{"$regularExpression":{"pattern":"^H","options":"i"}}
"timestampField":
{"$timestamp":{"t":1565545664,"i":1}}
{"$timestamp":{"t":1565545664,"i":1}}

돌아가기

비교 및 정렬 순서

다음

확장 JSON(v1)