Docs Menu
Docs Home
/
MongoDB Atlas
/ / /

スキーマの作成

項目一覧

  • Atlas UI を使用したスキーマの作成
  • Atlasで、プロジェクトのフェデレーティッドデータベースインスタンスにGoします。
  • SQL スキーマの管理 ページに移動します。
  • スキーマを作成します。
  • を使用したスキーマの作成 mongosh
  • 構文
  • パラメーター
  • 出力
  • 基本的な例
  • スキーマの生成と設定の例
  • Errors

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
string
データベースの名前。
namespaces
オブジェクトの配列
各コレクションまたはビューの名前と生成されたスキーマ。
namespaces.name
string
コレクションまたはビューの名前。
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という名前のコレクションのスキーマを生成します。 コマンドは、コレクションからランダムに選択された 2 つのドキュメントを使用してスキーマを作成します。これは、 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という名前のコレクションのスキーマを生成します。 コマンドは、コレクション内の最大 1000 のドキュメントを使用してスキーマを作成します。これは、コマンドではsampleSizeオプションが指定されておらず、デフォルトで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"
}
]

指定された名前空間がストレージ構成に存在しないか空である場合は、上記のエラーが返されます。 このエラーは、特定の名前空間にスキーマを設定できなかった場合にも返されます。

戻る

スキーマを管理する