Docs Menu
Docs Home
/ /
Atlas App Services
/ /

스키마 유형

이 페이지의 내용

  • 모든 스키마 유형
  • BSON 유형
  • 배열
  • 부울
  • 혼합
  • 번호
  • 객체
  • ObjectId
  • 문자열
  • UUID
  • 이진 데이터
  • Realm 데이터베이스 유형
  • 카운터
  • 세트
  • Dictionary
  • BSON Type 사전
  • 혼합 BSON types 사전
  • 내장된 객체 사전
  • 지리 공간 데이터
  • GeoJSON 포인트

다음 필드는 유형에 관계없이 모든 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 배열을 지정합니다. type 필드와 함께 사용할 수 없습니다.

BSON types에는 모든 JSON 유형뿐만 아니라 이름으로 참고할 수 있는 추가 유형이 포함됩니다.

  • double

  • string

  • object

  • array

  • objectId

  • date

  • bool

  • null

  • regex

  • int

  • timestamp

  • long

  • decimal

  • uuid

  • binData

  • mixed

type

스키마가 설명하는 속성의 JSON 유형입니다. 속성 값이 여러 유형일 수 있는 경우 JSON 유형 배열을 지정합니다. bsonType과 함께 사용할 수 없습니다.

중요

Atlas App Services는 JSON schema 표준과의 호환성을 유지하기 위해 type 필드를 지원합니다. 그러나 bsonType 필드를 대신 사용하는 것이 좋습니다. BSON types는 모든 JSON schema 유형을 포함해 다양한 데이터 유형을 지원합니다.

사용 가능한 표준 JSON 유형은 다음과 같습니다.

  • object

  • array

  • number

  • boolean

  • string

  • null

참고

MongoDB의 JSON Schema 구현 기능은 integer JSON 유형을 지원하지 않습니다. 대신 값이 int 또는 longbsonType 필드를 사용하세요.

enum
스키마가 설명하는 데이터에 대한 모든 유효한 값을 포함하는 배열입니다.
title
스키마가 모델링하는 데이터의 짧은 제목 또는 이름입니다. 이 필드는 메타데이터 용도로만 사용되며 스키마 유효성 검사에는 영향을 주지 않습니다.
description
이 스키마가 모델링하는 데이터에 대한 자세한 설명입니다. 이 필드는 메타데이터 용도로만 사용되며 스키마 유효성 검사에는 영향을 주지 않습니다.

array 에는 특정 유형의 값이 여러 개 포함되어 있습니다. BSON array 스키마는 표준 JSON schema 배열 을 사용합니다. 형식.

{
"bsonType": "array",
"items": <Schema Document> | [<Schema Document>, ...],
"additionalItems": <boolean> | <Schema Document>,
"maxItems": <integer>,
"minItems": <integer>,
"uniqueItems": <boolean>
}
필드 이름
설명
items
모든 배열 항목에 대한 스키마 또는 순서가 중요한 스키마 배열입니다.
additionalItems

기본값: true.

true이면 배열에 스키마에 정의되지 않은 추가 값이 포함될 수 있습니다. false인 경우 items 배열에 명시적으로 나열된 값만 배열에 나타날 수 있습니다.

값이 스키마 객체인 경우 모든 추가 필드는 스키마에 대해 유효성을 검사해야 합니다.

참고

additionalItems 필드는 배열-값 items 필드가 있는 배열 스키마에만 영향을 미칩니다. items 필드가 단일 스키마 객체인 경우에는 additionalItems이(가) 아무 영향도 주지 않습니다.

maxItems
배열의 최대 길이입니다.
minItems
배열의 최소 길이.
uniqueItems

기본값입니다: false

true인 경우 배열의 각 항목이 고유해야 합니다. false인 경우 여러 배열 항목이 동일할 수 있습니다.

고유 배열은 세트입니다.

세트 를 모델링하려면 uniqueItems 이(가) true 으)로 설정하다 array 스키마 유형을 사용합니다.

booltrue 또는 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

기본값입니다: false

true인 경우 필드 값은 maximum 값보다 엄밀히 작아야 합니다. false인 경우 필드 값은 maximum 값과 동일할 수도 있습니다.

minimum
숫자의 최솟값입니다.
exclusiveMinimum

기본값입니다: false

true인 경우 필드 값은 반드시 minimum 값보다 커야 합니다. false인 경우 필드 값은 minimum 값과 같을 수도 있습니다.

objectstring 키가 각각 입력된 값을 가진 구조화된 객체입니다. 객체는 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

기본값: true.

true인 경우 문서에 스키마에 정의되지 않은 추가 필드가 포함될 수 있습니다. false인 경우 스키마에 명시적으로 정의된 필드만 문서에 나타날 수 있습니다.

값이 스키마 객체인 경우 모든 추가 필드는 스키마에 대해 유효성을 검사해야 합니다.

dependencies
속성과 스키마 종속성을 지정합니다.

참고

객체 스키마 유형이 있는 모델 사전

사전을 모델링하려면 additionalProperties가 해당 사전에 저장된 값의 객체 유형으로 설정된 object 스키마 유형을 사용하세요.

objectIdBSON 객체에 대한 12바이트 식별자입니다. ObjectId 값은 가장 일반적으로 MongoDB 컬렉션 에 있는 문서 또는 동기화된 영역 에 있는 객체의 고유한 _id 값으로 사용됩니다.

{ "bsonType": "objectId" }

string(은)는 일련의 문자로 인코딩된 텍스트입니다. BSON string 스키마는 표준 JSON Schema 문자열 형식을 사용합니다.

{
"bsonType": "string",
"maxLength": <integer>,
"minLength": <integer>,
"pattern": "<Regular Expression>"
}
필드 이름
설명
maxLength
문자열의 최대 문자 수.
minLength
문자열의 최소 문자 수입니다.
pattern
문자열 값과 반드시 일치해야 하는 정규 표현식 문자열.

uuid(범용 고유 식별자)는 표준화된 고유의 16바이트 객체 식별자입니다.

{ "bsonType": "uuid" }

binData는 구조화되지 않은 바이너리 데이터 조각으로, 바이너리 BSON 유형에 매핑되며 항상 하위 유형 0을 사용합니다.

{ "bsonType": "binData" }

Realm 데이터베이스 유형은 Atlas Device SDK에만 해당됩니다.

SDK별 유형 및 정의 방법에 대한 자세한 내용은 SDK 설명서를 참조하세요.

카운터는 값을 늘리거나 줄일 수 있는 특수 숫자 유형입니다. App Services의 long 숫자 유형에 매핑됩니다.

{ "bsonType": "long" }

카운터 데이터 유형은 다음 SDK에서만 지원됩니다.

세트는 고유한 값의 컬렉션입니다.

설정된 스키마는 uniqueItemstrue로 설정된 array 스키마입니다.

{
"bsonType": "array",
"uniqueItems": true,
"items": {
"bsonType": "long"
}
}

사전은 특정 유형의 값과 쌍을 이루는 동적이고 고유한 string 키의 컬렉션을 말합니다. 사전은 기능적으로 사전에 정의된 필드 이름이 없는 객체 또는 문서입니다.

딕셔너리 스키마는 properties가 정의되지 않은 object 스키마이고 additionalProperties 값은 딕셔너리 값 유형에 대한 스키마입니다.

BSON type의 값을 포함한 딕셔너리를 저장하려면 해당 유형의 스키마로 additionalProperties를 설정합니다.

{
"bsonType": "object",
"additionalProperties": {
"bsonType": "string"
}
}
}

혼합된 값이 포함된 딕셔너리를 저장 하려면 additionalPropertiestrue 로 설정하다 합니다.

{
"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 포인트(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]
}
}

돌아가기

스키마 제거하기