スキーマの作成
項目一覧
Atlas UI を使用したスキーマの作成
Atlas SQL クイック スタート接続を作成すると、スキーマ生成が自動的に行われます。
Atlasで、プロジェクトのフェデレーティッドデータベースインスタンスにGoします。
まだ表示されていない場合は、プロジェクトを含む組織を から選択します。ナビゲーション バーの [ Organizations ] メニューを参照してください。
まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。
サイドバーで、 Services見出しの下のData Federationをクリックします。
Data Federationページが表示されます。
を使用したスキーマの作成 mongosh
sqlGenerateSchema
コマンドは、指定されたコレクションまたはビューの Atlas SQL スキーマを生成します。
構文
db.runCommand({ sqlGenerateSchema: 1, sampleNamespaces: [<namespace>], sampleSize: <int>, setSchemas: true|false })
パラメーター
Parameter | タイプ | 説明 | 必要性 |
---|---|---|---|
sampleNamespaces | 文字列の配列 | スキーマを生成する名前空間のコンマ区切りリストを指定します。 名前空間には、データベース名、ドット(.)セパレーター、コレクションまたはビューの名前( <database>.<collection>|<view> )。 データベース内のすべてのコレクションのスキーマを生成するには、コレクションまたはビュー名の代わりに* を指定します(つまり <database>.* )。 省略した場合、 は、現在のデータベース内のすべてのコレクションと ビュー のスキーマを生成します。 | 任意 |
sampleSize | integer | スキーマを作成するためのサンプルとして使用するドキュメントの数を指定します。 省略した場合、デフォルトは 1000 になります。 | 任意 |
setSchemas | ブール値 | コレクションまたはビューの生成されたスキーマを保存するかどうかを指定します。 値は次のいずれかになります。
省略した場合、デフォルトは | 任意 |
出力
コマンドが成功した場合、コマンドは以下を返します。
{ "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 は、次のフィールドを含めることができます。
これらのフィールドの詳細については、「 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 つのドキュメントを使用してスキーマを作成します。これは、 sampleSize
が2
であるためです。 コマンドではコレクションのスキーマが設定されません。このコマンドでは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" ] } } } } ] } ] }
Errors
コマンドが失敗した場合、 コマンドは次のエラーを返します。
"failedNamespaces": [ { "namespace" : "<db.ns>", "error" : "no documents found in sample namespace" } ]
指定された名前空間がストレージ構成に存在しないか空である場合は、上記のエラーが返されます。 このエラーは、特定の名前空間にスキーマを設定できなかった場合にも返されます。