스키마 유형
이 페이지의 내용
모든 스키마 유형
다음 필드는 유형에 관계없이 모든 BSON 스키마에서 사용할 수 있습니다.
{ "bsonType": "<BSON Type>" | ["<BSON Type>", ...], "type": "<JSON Type>" | ["<JSON Type>", ...], "enum": [<Value 1>, <Value 2>, ...], "description": "<Descriptive Text>, "title": "<Short Description>" }
필드 이름 | 설명 |
---|---|
bsonType | 스키마가 설명하는 속성의 BSON type. 속성 값이 여러 유형일 수 있는 경우 BSON types 배열을 지정합니다. BSON types에는 모든 JSON 유형뿐만 아니라 이름으로 참고할 수 있는 추가 유형이 포함됩니다.
|
type | 스키마가 설명하는 속성의 JSON 유형입니다. 속성 값이 여러 유형일 수 있는 경우 JSON 유형 배열을 지정합니다. 중요Atlas App Services는 JSON schema 표준과의 호환성을 유지하기 위해 사용 가능한 표준 JSON 유형은 다음과 같습니다.
참고MongoDB의 JSON Schema 구현 기능은 |
enum | 스키마가 설명하는 데이터에 대한 모든 유효한 값을 포함하는 배열입니다. |
title | 스키마가 모델링하는 데이터의 짧은 제목 또는 이름입니다. 이 필드는 메타데이터 용도로만 사용되며 스키마 유효성 검사에는 영향을 주지 않습니다. |
description | 이 스키마가 모델링하는 데이터에 대한 자세한 설명입니다. 이 필드는 메타데이터 용도로만 사용되며 스키마 유효성 검사에는 영향을 주지 않습니다. |
BSON 유형
배열
array
에는 특정 유형의 값이 여러 개 포함되어 있습니다. BSON array
스키마는 표준 JSON schema 배열 을 사용합니다. 형식.
{ "bsonType": "array", "items": <Schema Document> | [<Schema Document>, ...], "additionalItems": <boolean> | <Schema Document>, "maxItems": <integer>, "minItems": <integer>, "uniqueItems": <boolean> }
필드 이름 | 설명 |
---|---|
items | 모든 배열 항목에 대한 스키마 또는 순서가 중요한 스키마 배열입니다. |
additionalItems | 기본값:
값이 스키마 객체인 경우 모든 추가 필드는 스키마에 대해 유효성을 검사해야 합니다. 참고
|
maxItems | 배열의 최대 길이입니다. |
minItems | 배열의 최소 길이. |
uniqueItems | 기본값입니다:
|
부울
bool
은 true
또는 false
입니다.
{ "bsonType": "bool" }
혼합
참고
28, 20245월 이후에 생성된 앱
2024년 5월 28일 이후에 생성된 App Services Apps 는 혼합 데이터 속성 내에 혼합 데이터 컬렉션(배열 및 사전)을 저장할 수 있습니다. 다른 컬렉션 내에 컬렉션을 중첩할 수 있으므로 엄격한 데이터 모델을 정의하지 않고도 JSON 또는 MongoDB 문서와 같은 복잡한 데이터 구조를 저장할 수 있습니다.
Atlas Device SDK 와 함께 이 기능 을 사용하려면 다음 최소 SDK 버전 중 하나를 사용해야 합니다.
C++ SDK: 버전 미정
Flutter SDK: v2.0.0 이상
Kotlin SDK: v2.0.0 이상
.NET SDK: v12.2.0 이상
Node.js SDK: v12.9.0 이상
React Native SDK: v12.9.0 이상
Swift SDK: v10.51.0 이상
이 기능은 Java SDK에서 지원되지 않습니다 .
지원되는 SDK를 사용하여 기존 앱에서 이 기능을 활성화하는 방법에 대해 자세히 알아보려면 지원팀에 문의하세요.
mixed
필드에는 내장된 객체, 집합, 또는 SDK 지원 카운터를 제외하고 모든 스키마 유형이 포함될 수 있습니다. App Services는 문서 간에 일관적인 유형을 적용하지 않으므로 두 개의 서로 다른 문서가 서로 다른 유형의 값을 가질 수 있습니다.
혼합 필드는 혼합 데이터의 배열과 딕셔너리를 저장할 수 있습니다. Sync는 이들을 각각 배열과 객체로 MongoDB에 변환합니다. 이러한 혼합 데이터 컬렉션에는 최대 깊이가 100 수준인 다른 혼합 데이터 컬렉션도 포함될 수 있습니다. 이러한 유연성을 활용하여 가변 JSON 데이터나 복잡한 MongoDB 문서와 같이 사전 정의된 스키마에 맞지 않는 복잡한 데이터 구조를 저장할 수 있습니다.
혼합 필드는 관계를 나타낼 수도 있습니다. 동기화는 이러한 관계를 MongoDB에 맞게 DBRef로 변환하여 데이터베이스 이름, 컬렉션 이름, 링크의 기본 키를 유지합니다.
{ "bsonType": "mixed" }
번호
number
은(는) 일반적으로 일부 유형의 번호를 구성합니다. BSON 스키마는 JSON schema 숫자 를 확장합니다. 추가 유형을 사용하여 정수, 부동 소수점 및 소수점을 정의할 수 있습니다.
{ "bsonType": "number" | "int" | "long" | "double" | "decimal", "multipleOf": <number>, "maximum": <number>, "exclusiveMaximum": <boolean>, "minimum": <number>, "exclusiveMinimum": <boolean> }
필드 이름 | 설명 |
---|---|
multipleOf | 필드 값의 정수 제수입니다. 예를 들어 multipleOf 이(가) 3 (으)로 설정된 경우 6 은(는) 유효한 값이지만 7 은(는) 유효한 값이 아닙니다. |
maximum | 숫자의 최대값. |
exclusiveMaximum | 기본값입니다:
|
minimum | 숫자의 최솟값입니다. |
exclusiveMinimum | 기본값입니다:
|
객체
object
는 string
키가 각각 입력된 값을 가진 구조화된 객체입니다. 객체는 Realm 객체와 동기화된 영역에 내장된 객체 및 MongoDB에 매핑되는 문서를 나타냅니다.
{ "bsonType": "object", "title": "<Type Name>", "required": ["<Required Field Name>", ...], "properties": { "<Field Name>": <Schema Document> }, "minProperties": <integer>, "maxProperties": <integer>, "patternProperties": { "<Field Name Regex>": <Schema Document> }, "additionalProperties": <boolean> | <Schema Document>, "dependencies": { "<Field Name>": <Schema Document> | ["<Field Name>", ...] } }
필드 이름 | 설명 |
---|---|
required | 문서에 반드시 포함되어야 하는 필드 이름의 배열. |
title | 객체 의 유형 이름입니다. App Services 는 이 값을 사용하여 GraphQL API 에서 문서 유형의 이름을 지정합니다. (GraphQL 은 더 이상 사용되지 않습니다. 자세히 알아보기) |
properties | 각 필드가 이름별로 상위 객체의 필드에 매핑되는 객체입니다. 각 필드의 값은 해당 필드의 값을 구성하는 스키마 문서입니다. |
minProperties | 객체에 허용되는 최소 필드 수입니다. |
maxProperties | 객체에 허용되는 최대 필드 수입니다. |
patternProperties | 각 필드가 일치하는 부모 객체의 모든 필드에 매핑되는 표현식 문자열인 객체입니다. 각 필드의 값은 일치하는 필드의 값을 구성하는 스키마 문서입니다. |
additionalProperties | 기본값:
값이 스키마 객체인 경우 모든 추가 필드는 스키마에 대해 유효성을 검사해야 합니다. |
dependencies | 속성과 스키마 종속성을 지정합니다. |
참고
객체 스키마 유형이 있는 모델 사전
사전을 모델링하려면 additionalProperties
가 해당 사전에 저장된 값의 객체 유형으로 설정된 object
스키마 유형을 사용하세요.
ObjectId
objectId
는 BSON 객체에 대한 12바이트 식별자입니다. ObjectId 값은 가장 일반적으로 MongoDB 컬렉션 에 있는 문서 또는 동기화된 영역 에 있는 객체의 고유한 _id
값으로 사용됩니다.
{ "bsonType": "objectId" }
문자열
string
(은)는 일련의 문자로 인코딩된 텍스트입니다. BSON string
스키마는 표준 JSON Schema 문자열 형식을 사용합니다.
{ "bsonType": "string", "maxLength": <integer>, "minLength": <integer>, "pattern": "<Regular Expression>" }
필드 이름 | 설명 |
---|---|
maxLength | 문자열의 최대 문자 수. |
minLength | 문자열의 최소 문자 수입니다. |
pattern | 문자열 값과 반드시 일치해야 하는 정규 표현식 문자열. |
UUID
uuid
(범용 고유 식별자)는 표준화된 고유의 16바이트 객체 식별자입니다.
{ "bsonType": "uuid" }
이진 데이터
binData
는 구조화되지 않은 바이너리 데이터 조각으로, 바이너리 BSON 유형에 매핑되며 항상 하위 유형 0을 사용합니다.
{ "bsonType": "binData" }
Realm 데이터베이스 유형
Realm 데이터베이스 유형은 Atlas Device SDK에만 해당됩니다.
SDK별 유형 및 정의 방법에 대한 자세한 내용은 SDK 설명서를 참조하세요.
카운터
카운터는 값을 늘리거나 줄일 수 있는 특수 숫자 유형입니다. App Services의 long
숫자 유형에 매핑됩니다.
{ "bsonType": "long" }
카운터 데이터 유형은 다음 SDK에서만 지원됩니다.
세트
세트는 고유한 값의 컬렉션입니다.
설정된 스키마는 uniqueItems
이 true
로 설정된 array
스키마입니다.
{ "bsonType": "array", "uniqueItems": true, "items": { "bsonType": "long" } }
Dictionary
사전은 특정 유형의 값과 쌍을 이루는 동적이고 고유한 string
키의 컬렉션을 말합니다. 사전은 기능적으로 사전에 정의된 필드 이름이 없는 객체 또는 문서입니다.
딕셔너리 스키마는 properties
가 정의되지 않은 object
스키마이고 additionalProperties
값은 딕셔너리 값 유형에 대한 스키마입니다.
BSON Type 사전
BSON type의 값을 포함한 딕셔너리를 저장하려면 해당 유형의 스키마로 additionalProperties
를 설정합니다.
{ "bsonType": "object", "additionalProperties": { "bsonType": "string" } } }
혼합 BSON types 사전
혼합된 값이 포함된 딕셔너리를 저장 하려면 additionalProperties
을 true
로 설정하다 합니다.
{ "bsonType": "object", "additionalProperties": true } }
또는 전체 mixed
스키마를 정의할 수 있습니다:
{ "bsonType": "object", "additionalProperties": { "bsonType": "mixed" } } }
내장된 객체 사전
내장된 객체 값이 있는 사전을 저장하려면 내장된 객체의 유형 이름으로 title
필드가 설정된 object
스키마를 정의합니다.
{ "bsonType": "object", "additionalProperties": { "bsonType": "object", "title": “Address”, "properties": { "streetNumber": { "bsonType": "string" }, "street": { "bsonType": "string" }, "city": { "bsonType": "string" }, "province": { "bsonType": "string" }, "country": { "bsonType": "string" }, "postalCode": { "bsonType": "string" } } } }
지리 공간 데이터
지리 공간적 데이터는 지구 표면의 지점 및 기타 데이터를 설명합니다. App Services에는 내장된 지리 공간적 유형이 없습니다. 대신 표준 GeoJSON 객체를 사용하여 지리적 데이터를 모델링합니다.
GeoJSON 포인트
GeoJSON 포인트(GeoPoint)는 지구 표면의 단일 위치를 말합니다. GeoPoint 스키마에는 string
유형의 필수 type
필드가 있어야 하며, 이 필드는 항상 'Point'로 설정되어 있습니다.
double의 배열인 coordinates
필드도 제공해야 합니다. coordinates
배열은 double 값을 적어도 두 개 포함해야 하며, 세 번째 값을 포함할 수도 있습니다.
첫 번째 double은 -180에서 180 사이의 점의 경도입니다.
두 번째는 -90에서 90 사이의 위도입니다.
선택 사항인 세 번째 값은 지점의 높이/고도를 미터 단위로 나타냅니다. Atlas는 쿼리를 수행할 때 이 값을 무시합니다.
참고
Device Sync 스키마에서는 필요에 따라 배열을 설정할 수 없으므로 동기화 서버는 좌표 필드가 있고 요구 사항을 충족하는지 확인합니다.
Device Sync를 사용하지 않을 경우에는 일반 지리 공간적 연산자로 지리 공간적 데이터를 쿼리할 수 있습니다. 그러나 Atlas Device Sync를 사용하는 경우 GeoPoint 객체에는 다음 규칙도 적용됩니다.
반드시
object
유형이어야 합니다.다른 유형에 포함해야 합니다.
double 값이라면
coordinates
배열 내에서 추가 값이 허용됩니다.GeoPoint 객체의 추가적인 속성도 허용됩니다.
다음은 'location'이라는 GeoPoint 속성이 내장된 객체의 장치 동기화 스키마입니다.
{ "title": "MyObject", "properties": { "_id": { "bsonType": "objectId" }, "location": { "bsonType": "object", "required": [ "type" ], "properties": { "type": { "bsonType": "string", }, "coordinates": { "bsonType": "array", "items": { "bsonType": "double" } } } } } }
다음 코드 차단은 스키마를 따르는 문서를 보여줍니다. 여기에는 "location"이라는 단일 GeoPoint 객체가 포함되어 있습니다.
{ "_id": { "$oid": "65039d09fe4e46dddee31a3f" }, "location": { "type": "Point", "coordinates": [-122.4, 48.12, 23.0] } }