Docs Menu
Docs Home
/
MongoDB Atlas
/ / /

스키마 만들기

이 페이지의 내용

  • Atlas UI를 사용하여 스키마 만들기
  • Atlas에서 프로젝트의 연합 데이터베이스 인스턴스로 이동합니다.
  • SQL 스키마 관리 페이지로 이동합니다.
  • 스키마를 만듭니다.
  • 다음을 사용하여 스키마 생성 mongosh
  • 구문
  • 매개변수
  • 출력
  • 예시
  • 기본 예시
  • 스키마 예시 생성 및 설정
  • 오류

스키마 생성은 Atlas SQL 빠른 시작 연결을 만들 때 자동으로 발생합니다.

1
  1. 아직 표시되지 않은 경우 다음에서 프로젝트가 포함된 조직을 선택합니다. Organizations 메뉴를 클릭합니다.

  2. 아직 표시되지 않은 경우 내비게이션 바의 Projects 메뉴에서 프로젝트를 선택합니다.

  3. 사이드바에서 Services 제목 아래의 Data Federation를 클릭합니다.

    Data Federation 페이지가 표시됩니다.

2

Federated Database Instances 섹션에서 다음을 클릭합니다. 스키마 오른쪽에 있는 아이콘을 클릭한 다음 드롭다운에서 Manage SQL Schemas 를 선택합니다.

3

빈 스키마가 있는 컬렉션에서:

  1. 다음을 클릭합니다..

  2. Generate new schema from sample 을 클릭하거나 자체 JSON 을 제공합니다.

  3. Save를 클릭합니다.

sqlGenerateSchema 명령은 지정된 컬렉션 또는 뷰에 대한 Atlas SQL 스키마를 생성합니다.

db.runCommand({
sqlGenerateSchema: 1,
sampleNamespaces: [<namespace>],
sampleSize: <int>,
setSchemas: true|false
})
Parameter
유형
설명
필요성
sampleNamespaces
문자열 배열
스키마를 생성할 네임스페이스의 쉼표로 구분된 목록을 지정합니다. 네임스페이스 에는 데이터베이스 이름, 점(.) 구분 기호, 컬렉션 또는 뷰 이름(예: <database>.<collection>|<view>). 데이터베이스의 모든 컬렉션에 대한 스키마를 생성하려면 컬렉션 또는 뷰 이름 대신 * 를 지정합니다(예: <database>.*). 생략하면 현재 데이터베이스의 모든 컬렉션 및 뷰에 대한 스키마를 생성합니다.
옵션
sampleSize
integer
스키마를 생성하기 위해 샘플로 사용할 문서 수를 지정합니다. 생략하는 경우 기본값은 1000입니다.
옵션
setSchemas
부울

컬렉션 또는 뷰에 대해 생성된 스키마를 저장할지 여부를 지정합니다. 값은 다음 중 하나일 수 있습니다.

  • true 스키마를 저장합니다. 컬렉션 또는 뷰에 대한 스키마가 이미 있는 경우 기존 스키마를 덮어씁니다.

  • false 스키마를 저장하지 않습니다.

생략하는 경우 기본값은 false입니다.

옵션

명령이 성공하면 이 명령은 다음을 반환합니다.

{
"ok" : 1,
"schemas" : [
{
"databaseName" : "<database-name>",
"namespaces" : [
{
"name" : "<collection-name>",
"schema" : {
"version" : NumberLong(1),
"jsonSchema" : {}
}
}
]
},
...
]
}

schemas 객체에 다음 필드가 포함되어 있습니다.

Parameter
유형
설명
databaseName
문자열
데이터베이스의 이름입니다.
namespaces
객체 배열
각 컬렉션 또는 뷰의 이름 및 생성된 스키마입니다.
namespaces.name
문자열
컬렉션 또는 뷰의 이름입니다.
namespaces[n].schema
문서
컬렉션 또는 뷰의 스키마입니다.
namespaces[n].schema.version
integer
스키마의 형식 버전입니다. 값은 항상 1입니다.
namespaces[n].schema.jsonSchema
문서

컬렉션 또는 뷰의 JSON schema입니다. JSON schema에는 다음 필드가 포함될 수 있습니다.

  • bsonType

  • properties

  • items

  • additionalProperties

  • required

이러한 필드에 대해 자세히 알아보려면 JSON Schema 키워드를 참조하세요.

setSchemas 옵션을 사용하여 컬렉션 또는 뷰에 대한 스키마를 설정하는 경우 sqlGetSchema 명령을 실행하여 명령이 성공했는지 확인할 수 있습니다. sqlGetSchema 명령 metadata.description에는 다음 값이 포함되어야 합니다.

"set using sqlGenerateSchema with setSchemas = true"

다음 문서가 포함된 sampleDB라는 데이터베이스에 있는 egData 컬렉션을 고려해 보세요.

{"a": {"b": {"c": [1, 2, 3]}}, "s": 1}
{"a": {"b": {"c": [4, 5, 6]}}, "s": 2}
{"a": {"b": [7, 8, 9]}, "s": 3}
{"a": {"b": {"c": []}}, "s": 4}
{"a": {"b": {"c": "hello"}}, "s": 5}
{"a": {"b": {"c": {"d": 1}}}, "s": 6}
{"a": {"b": {"c": null}}}
{"s": 7}

아래 예시에서는 sqlGenerateSchema 명령을 사용하여 위 컬렉션에 대한 스키마를 생성합니다.

다음 명령은 스토리지 구성에서 sampleDB.egData라는 컬렉션에 대한 스키마를 생성합니다. sampleSize2이기 때문에 명령은 컬렉션에서 무작위로 선택된 두 개의 문서를 사용하여 스키마를 생성합니다. setSchemas 옵션이 명령과 함께 지정되지 않고 기본값이 false이므로 이 명령은 컬렉션에 대한 스키마를 설정하지 않습니다.

db.runCommand({
sqlGenerateSchema: 1,
sampleNamespaces: ["sampleDB.egData"],
sampleSize: 2
})

이전 명령은 다음 출력을 반환합니다. 출력의 필드에 대해 자세히 알아보려면 출력을 참조하세요 .

{
"ok" : 1,
"schemas" : [
{
"databaseName" : "sampleDB",
"namespaces" : [
{
"name" : "egData",
"schema" : {
"version" : NumberLong(1),
"jsonSchema" : {
"bsonType" : [
"object"
],
"properties" : {
"a" : {
"bsonType" : [
"object"
],
"properties" : {
"b" : {
"bsonType" : [
"object"
],
"properties" : {
"c" : {
"bsonType" : [
"array"
],
"items" : {
"bsonType" : [
"int"
]
}
}
}
}
}
},
"s" : {
"bsonType" : [
"int"
]
}
}
}
}
}
]
}
]
}

다음 명령은 스토리지 구성에서 sampleDB.egData라는 컬렉션에 대한 스키마를 생성합니다. sampleSize 옵션이 명령과 함께 지정되지 않고 기본값이 1000이므로 이 명령은 컬렉션에서 최대 1000개의 문서를 사용하여 스키마를 생성합니다. 이 명령은 setSchemas 옵션이 true로 설정되어 있기 때문에 생성된 스키마를 컬렉션에 사용할 스키마로 설정합니다.

db.runCommand({
sqlGenerateSchema: 1,
sampleNamespaces: ["sampleDB.egData"],
setSchemas: true
})

이전 명령은 다음 출력을 반환합니다. 출력의 필드에 대해 자세히 알아보려면 출력을 참조하세요 .

{
"ok" : 1,
"schemas" : [
{
"databaseName" : "sampleDB",
"namespaces" : [
{
"name" : "egData",
"schema" : {
"version" : NumberLong(1),
"jsonSchema" : {
"bsonType" : [
"object"
],
"properties" : {
"a" : {
"bsonType" : [
"object"
],
"properties" : {
"b" : {
"bsonType" : [
"object",
"array"
],
"properties" : {
"c" : {
"bsonType" : [
"array",
"string",
"object",
"null"
],
"properties" : {
"d" : {
"bsonType" : [
"int"
]
}
},
"items" : {
"bsonType" : [
"int"
]
}
}
},
"items" : {
"bsonType" : [
"int"
]
}
}
}
},
"s" : {
"bsonType" : [
"int",
"object"
]
}
}
}
}
]
}
]
}

명령이 실패하면 다음과 같은 오류가 반환됩니다.

"failedNamespaces": [
{
"namespace" : "<db.ns>",
"error" : "no documents found in sample namespace"
}
]

지정된 네임스페이스가 스토리지 구성에 없거나 비어 있는 경우 위의 오류가 반환됩니다. 지정된 네임스페이스에 스키마를 설정할 수 없는 경우에도 이 오류가 반환됩니다.

돌아가기

스키마 관리