スキーマを分析した後、エクスポートすることができます。これは、スキーマを共有したり、コレクション間でスキーマを比較したりする場合に役立ちます。
始める前に
まだ行っていない場合は、スキーマを分析します。
スキーマを分析します。
[Analyze Schema] をクリックします。
Compass がスキーマを分析すると、コレクションからドキュメントのランダムなサブセットをサンプリングします。サンプリングについて詳しくは、「サンプリング」を参照してください。
スキーマが分析されたら、次の手順でスキーマをエクスポートします。
手順
標準形式スキーマ オブジェクトのプロパティ
標準形式のスキーマオブジェクトには、次のフィールドが含まれています。
プロパティ | データ型 | 説明 |
|---|---|---|
| 文字列または配列 | このデータ型のJSONタイプ。詳細については、型の公式JSONドキュメントを参照してください。 |
| 文字列の配列 | スキーマに表示する必要があるフィールド。詳細については、公式 JSON ドキュメントの「required」セクションを参照してください。 |
| オブジェクト | 各フィールドのプロパティ 。キーはプロパティ名で、値はサブスキーマです。詳細については、 プロパティの公式JSONドキュメントを参照してください 。 |
| ドキュメント | 配列フィールド内の要素に関するメタデータ。メタデータは埋め込みサブスキーマとして表示されます。詳細については、公式 JSON ドキュメントの「items」セクションを参照してください。 |
これは、使用可能なすべてのフィールドを網羅するものではありません。追加フィールドの詳細については、公式のJSON schema 仕様 を参照してください。
MongoDB 形式スキーマ オブジェクトのプロパティ
MongoDB形式のスキーマオブジェクトには次のフィールドが含まれています。
プロパティ | データ型 | 説明 |
|---|---|---|
| 文字列または複数の文字列の配列 | このフィールドの BSON 型。 |
| 文字列の配列 | スキーマに表示する必要があるフィールド。 |
| ドキュメント | 各フィールドのプロパティ 。キーはプロパティ名で、値はサブスキーマです。 |
| ドキュメント | 配列フィールド内の要素に関するメタデータ。メタデータは埋め込みサブスキーマとして表示されます。 |
これは、使用可能なすべてのフィールドを網羅するものではありません。追加フィールドの詳細については、公式のJSON schema 仕様 を参照してください。
拡張形式スキーマ オブジェクトのプロパティ
拡張形式スキーマ オブジェクトには、標準スキーマ フィールドに加えて、これらのフィールドが含まれています。
プロパティ | データ型 | 説明 |
|---|---|---|
| 文字列または配列 | このフィールドの BSON 型。 |
| ドキュメント | フィールドに関するメタデータを含むドキュメント。 |
| ブール値 |
|
| float | フィールドがランダムなドキュメントに存在する確率。 |
| integer | このフィールドを持つサンプルからのドキュメントの数。 |
| 配列 | 拡張JSONとしてのサンプル値。サンプル値は最初の 100 文字に制限されています。 |
これは、使用可能なすべてのフィールドを網羅するものではありません。追加フィールドの詳細については、公式のJSON schema 仕様 を参照してください。
制限
Compass は、1000 を超える異なるフィールドを持つスキーマをエクスポートできません。1000 個を超えるフィールドを含むスキーマをエクスポートしようとすると、Compass はエラーを返します。
サンプル スキーマ
次の例では、それぞれが titleフィールドとその映画に関する固有の情報を持つ 3 ドキュメントのコレクションを使用します。
[ { "_id": { "$oid": "573a1390f29313caabcd6223" }, "title": "The Poor Little Rich Girl", "plot": "Gwen's family is rich, but her parents ignore her and most of the serv...", "year": 1917, }, { "_id": { "$oid": "573a1391f29313caabcd7616" }, "title": "Salomè", "plot": "Salome, the daughter of Herodias, seduces her step-father/uncle Herod, ...", "year": 1922, "genres": [ "drama", "horror" ] }, { "_id": { "$oid": "573a1392f29313caabcd9c1b" }, "title": "Payment Deferred", "year": 1932, },]上記の例を MongoDB Compass にインポートして、スキーマ出力を試すことができます。サンプル コレクションを MongoDB Compass にインポートするには、次の手順を行います。
JSONドキュメントをクリップボードにコピーします。
上の JSON ドキュメントをコピーします。
上記の例では、次のスキーマが出力されます。
{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "required": [ "_id", "title", "year" ], "properties": { "_id": { "$ref": "#/$defs/ObjectId" }, "genres": { "type": "array", "items": { "type": "string" } }, "plot": { "type": "string" }, "title": { "type": "string" }, "year": { "type": "integer" } }, "$defs": { "ObjectId": { "type": "object", "properties": { "$oid": { "type": "string", "pattern": "^[0-9a-fA-F]{24}$" } }, "required": [ "$oid" ], "additionalProperties": false } }}{ "$jsonSchema": { "bsonType": "object", "required": [ "_id", "title", "year" ], "properties": { "_id": { "bsonType": "objectId" }, "genres": { "bsonType": "array", "items": { "bsonType": "string" } }, "plot": { "bsonType": "string" }, "title": { "bsonType": "string" }, "year": { "bsonType": "int" } } }}サンプル値は最初の 100 文字に制限されています。
{ "type": "object", "x-bsonType": "object", "required": [ "_id", "title", "year" ], "properties": { "_id": { "$ref": "#/$defs/ObjectId", "x-bsonType": "objectId", "x-metadata": { "hasDuplicates": false, "probability": 1, "count": 3 }, "x-sampleValues": [ "573a1391f29313caabcd7616", "573a1392f29313caabcd9c1b", "573a1390f29313caabcd6223" ] }, "genres": { "type": "array", "x-bsonType": "array", "x-metadata": { "hasDuplicates": true, "probability": 0.3333333333333333, "count": 1 }, "items": { "type": "string", "x-bsonType": "string", "x-metadata": { "hasDuplicates": false, "probability": 1, "count": 2 }, "x-sampleValues": [ "drama", "horror" ] } }, "plot": { "type": "string", "x-bsonType": "string", "x-metadata": { "hasDuplicates": false, "probability": 0.6666666666666666, "count": 2 }, "x-sampleValues": [ "Salome, the daughter of Herodias, seduces her step-father/uncle Herod, ...", "Gwen's family is rich, but her parents ignore her and most of the serv..." ] }, "title": { "type": "string", "x-bsonType": "string", "x-metadata": { "hasDuplicates": false, "probability": 1, "count": 3 }, "x-sampleValues": [ "Salomè", "Payment Deferred", "The Poor Little Rich Girl" ] }, "year": { "type": "integer", "x-bsonType": "int", "x-metadata": { "hasDuplicates": false, "probability": 1, "count": 3 }, "x-sampleValues": [ 1922, 1932, 1917 ] } }, "$defs": { "ObjectId": { "type": "object", "properties": { "$oid": { "type": "string", "pattern": "^[0-9a-fA-F]{24}$" } }, "required": [ "$oid" ], "additionalProperties": false } }}
