AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

Atlas Data Federation スキーマコマンド

Atlas Data Federation では、sqlGenerateSchemasqlGetSchemasqlSetSchemaの 3 つのコマンドを使用して、SQL インターフェースが使用するスキーマを管理します。これらのコマンドは、mongosh からフェデレーティッドデータベースインスタンスに対して実行するか、Atlas UI で同等のアクションを実行します。このページでは、これらのコマンドとその UI の同等について記述します。

Atlas Data Federation は、コレクションからドキュメントをサンプルして初期スキーマを生成します。スキーママネジメントとその他のサポートされている配置タイプの経歴については、スキーママネジメントを参照してください。

注意

sqlGenerateSchemasqlGetSchemasqlSetSchema コマンドとそれらの Atlas UI の対応するコマンドは、Atlas Data Federation 配置タイプにのみ適用されます。これらは、自己管理型 Enterprise Advanced (EA) 配置(MongoDB SQL スキーマ Builder CLI を使用)または Atlas Data Federation を使用しない標準 Atlas クラスターに対するクエリには適用されません。

sqlGenerateSchema コマンドは、指定されたコレクションまたはビューの SQL インターフェース スキーマを生成します。Atlas Data Federation は、各名前空間からドキュメントをサンプリングしてスキーマを導出します。

sampleNamespacesパラメータを使用する場合は、 adminデータベースに対してコマンドを実行する必要があります。

use admin
db.runCommand({
sqlGenerateSchema: 1,
sampleNamespaces: [<namespace>],
sampleSize: <int>,
setSchemas: true|false
})
Parameter
タイプ
説明
必要性

sampleNamespaces

文字列の配列

スキーマを生成する名前空間のカンマ区切りリストを指定します。名前空間には、データベース名、ドット(.)セパレータ、コレクション名またはビュー名(つまり<database>.<collection>|<view>)が含まれます。データベース内のすべてのコレクションのスキーマを生成するには、コレクション名またはビュー名(つまり<database>.*)の代わりに*を指定します。省略すると、Atlas Data Federation は現在のデータベース内のすべてのコレクションとビューのスキーマを生成します。

任意

sampleSize

integer

スキーマを作成するためのサンプルとして使用するドキュメントの数を指定します。 省略した場合、デフォルトは1000になります。

任意

setSchemas

ブール値

コレクションまたはビューの生成されたスキーマを保存するかどうかを指定します。値は次のいずれかになります。

  • true スキーマを保存する。コレクションまたはビューのスキーマがすでに存在する場合、Atlas Data Federation は既存のスキーマを上書きします。

  • 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"

コマンドが失敗した場合、コマンドは次のエラーを返します。

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

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

sqlGetSchemaコマンドは、指定されたコレクションまたはビュー用に保存されているスキーマを検索します。

db.getSiblingDB("<dbName>").runCommand({
sqlGetSchema: "<collection-name>|<view-name>"
})
Parameter
タイプ
説明
必要性

<collection-name>

string

スキーマを検索するコレクションの名前。コレクション名またはビュー名のいずれかを指定します。

条件付き

<view-name>

string

スキーマを検索するビューの名前。ビュー名またはコレクション名のいずれかを指定します。

条件付き

コレクションまたはビューにスキーマがない場合、コマンドは次の出力を返します。

{ "ok" : 1, "metadata" : { }, "schema" : { } }

コレクションまたはビューにスキーマがある場合、このコマンドは次のような出力を返します。

{
"ok": 1,
"metadata": {
"description": "<description>"
},
"schema": {
"version": NumberLong(1),
"jsonSchema": { ... }
}
}

metadata.descriptionフィールドは、コレクションのスキーマがどのように設定されたかを示します。 値は次のいずれかになります。

generated automatically by Atlas Data Federation

スキーマが Atlas Data Federation によって自動生成されたことを示します。

set using sqlGenerateSchema with setSchemas = true

setSchema オプションが true に設定されていたため、sqlGenerateSchema コマンドによってスキーマが設定されたことを示します。

set using sqlSetSchema

sqlSetSchema コマンドを使用してスキーマが設定されたことを示します。

schema ドキュメントには、次のフィールドが含まれています。

Parameter
タイプ
説明

schema.version

integer

スキーマの形式バージョン。 値は常に 1 です。

schema.jsonSchema

ドキュメント

コレクションまたはビューのJSON schema。 JSON schema は、次のフィールドを含めることができます。

  • bsonType

  • properties

  • items

これらのフィールドの詳細については、「 JSON schema キーワード 」を参照してください。

sqlSetSchema コマンドは、コレクションまたはビューのスキーマを設定または削除します。コマンドは、提供されたスキーマを直接適用します。コマンドは、提供されたスキーマをコレクション内のデータと照合して検証しません。

db.getSiblingDB("<dbName>").runCommand({
sqlSetSchema: "<collection-name>|<view-name>",
schema: {
"version": 1,
"jsonSchema": <jsonSchema>
}
})
db.getSiblingDB("<dbName>").runCommand({
sqlSetSchema: "<collection-name>|<view-name>",
schema: {}
})
Parameter
タイプ
説明
必要性

<collection-name>

string

スキーマを設定するコレクションの名前。コレクション名またはビュー名を指定します。

条件付き

<view-name>

string

スキーマを設定するビューの名前。ビュー名またはコレクション名を指定します。

条件付き

schema

ドキュメント

スキーマの形式バージョンと次のいずれか

  • コレクションまたはビューのJSON schema

  • コレクションまたはビューのスキーマを除く空のドキュメント

itemsフィールドには単一のドキュメントまたはドキュメントの配列を指定できます。 スキーマを取得すると、 itemsにはスキーマの設定に使用したフォームが表示されます。

必須

コマンドが成功すると、次の出力が返されます。

{ "ok" : 1 }

コマンドが成功したことは、 sqlGetSchemaコマンドを実行することで確認できます。 レスポンスのmetadata.descriptionフィールドには次の値が含まれています。

"set using sqlSetSchema"

次のドキュメントを含む、 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}

次の例では、Atlas Data Federation スキーマ コマンドを使用して前述のコレクションのスキーマを生成、取得、設定、削除します。

次のコマンドは、ストレージ構成のsampleDB.egDataという名前のコレクションのスキーマを生成します。このコマンドは、コレクションから無作為に選択された 2 つのドキュメントを使用してスキーマを作成します。sampleSize2 であるため。このコマンドは、setSchemas オプションが指定されていないため、コレクションのスキーマを設定しません。デフォルトで false になります。

use admin
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個のドキュメントを使用します。setSchemastrueであるため、コマンドは生成されたスキーマをコレクションで使用するスキーマとして設定します。

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

次のコマンドは、 egDataコレクションに保存されているスキーマを検索します。

db.getSiblingDB("sampleDB").runCommand({
sqlGetSchema: "egData"
})

上記のコマンドは、次の出力を返します。 出力のフィールドの詳細については、「 出力 」を参照してください

{
"ok" : 1,
"metadata" : {
"description" : "set using sqlGenerateSchema with setSchemas = true"
},
"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" ]
}
}
}
}
}

次の sqlSetSchema コマンドは、egData コレクションのスキーマを設定します。

db.getSiblingDB("sampleDB").runCommand({
sqlSetSchema : "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" ]
}
}
}
}
})

上記のコマンドは、次の出力を返します。

{ "ok" : 1 }

次の sqlSetSchema コマンドは、空の schema ドキュメントを渡すことで egData コレクションのスキーマを削除します。

db.getSiblingDB("sampleDB").runCommand({
sqlSetSchema: "egData",
schema: {}
})

上記のコマンドは、次の出力を返します。

{ "ok" : 1 }

Manage SQL Schemas ページから Atlas UI で同じスキーマ アクションを実行できます。UI は、sqlGenerateSchema コマンドと同様にドキュメントをサンプルしてスキーマを生成します。

クイック スタート接続を作成すると、Atlas Data Federation はスキーマを自動的に生成します。スキーマを手動で作成するには、次の手順を使用します。

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] をクリックします。

フィールドの追加やフィールドタイプの変更など、基礎のデータの形状が変更されるたびにスキーマを再生成して、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] をクリックします。

  3. [Save] をクリックします。

1
  1. まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。

  2. まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。

  3. サイドバーで、 Services見出しの下のData Federationをクリックします。

Data Federationページが表示されます。

2

Federated Database Instancesセクションから、次をクリックします:スキーマの右側にある アイコンをクリックし、ドロップダウンからManage SQL Schemasを選択します。

このページでは、既存のすべてのスキーマを表示できます。JSON 形式で特定のスキーマを表示するには、 をクリックします。

1
  1. まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。

  2. まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。

  3. サイドバーで、 Services見出しの下のData Federationをクリックします。

Data Federationページが表示されます。

2

Federated Database Instancesセクションから、次をクリックします:スキーマの右側にある アイコンをクリックし、ドロップダウンからManage SQL Schemasを選択します。

3
  1. スキーマの横にある [] をクリックします。

  2. JSON を編集します。

  3. [Save] をクリックします。

1
  1. まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。

  2. まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。

  3. サイドバーで、 Services見出しの下のData Federationをクリックします。

Data Federationページが表示されます。

2

Federated Database Instancesセクションから、次をクリックします:スキーマの右側にある アイコンをクリックし、ドロップダウンからManage SQL Schemasを選択します。

このページでは、既存のすべてのスキーマを表示できます。

3
  1. 削除するスキーマで、 をクリックします。

  2. [Clear...] をクリックします。

  3. [Clear schema] をクリックして確定します。

1
  1. まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。

  2. まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。

  3. サイドバーで、 Services見出しの下のData Federationをクリックします。

Data Federationページが表示されます。

2

Federated Database Instancesセクションから、次をクリックします:スキーマの右側にある アイコンをクリックし、ドロップダウンからManage SQL Schemasを選択します。

このページでは、既存のすべてのスキーマを表示できます。

3
  1. 右上隅のアイコンをクリックします。

  2. [Clear all schemas] をクリックします。

  3. [Clear all schemas] を再度クリックして確定します。

スケジュールされたスキーマ更新は、スキーマの正確性を長期にわたって維持するのに役立ちます。スケジュールされたスキーマ更新は、各名前空間をサンプルし、新しいスキーマを既存のスキーマとマージします。例、スケジュールされたスキーマ更新により、Atlas Data Federation はコレクションに追加された新しいフィールドを自動的に検出できます。

1
  1. まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。

  2. まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。

  3. サイドバーで、 Services見出しの下のData Federationをクリックします。

Data Federationページが表示されます。

2

Federated Database Instancesセクションから、次をクリックします:スキーマの右側にある アイコンをクリックし、ドロップダウンからManage SQL Schemasを選択します。

3
  1. [Configure schema update schedule] をクリックします。

  2. 頻度を選択します。

  3. [Save] をクリックします。