定義
構文
$jsonSchema 演算子式の構文は次のとおりです。
{ $jsonSchema: <JSON Schema object> } 
JSON schemaオブジェクトは、 4JSON schema 標準 の ドラフト に従って形式されます。
{ <keyword1>: <value1>, ... } 
以下に例を挙げます。
{   $jsonSchema: {      required: [ "name", "major", "gpa", "address" ],      properties: {         name: {            bsonType: "string",            description: "must be a string and is required"         },         address: {            bsonType: "object",            required: [ "zipcode" ],            properties: {                "street": { bsonType: "string" },                "zipcode": { bsonType: "string" }            }         }      }   } } 
JSON Schema
MongoDBは、いくつか違いはあるものの、コア仕様 および 検証仕様 を含むJSON schemaのドラフト 4 をサポートしています。詳細については、拡張機能 と 省略 を参照してください。
JSON schema の詳細については、 公式ウェブサイトを参照してください。
利用可能なキーワード
JSON schema は、次のキーワードを指定できます。
注意
MongoDB は、JSON schema で使用可能なキーワードのサブセットを実装します。 省略の完全なリストについては、「 省略 」を参照してください。
| Keyword | タイプ | 定義 | 動作 | 
|---|---|---|---|
| additionalItems | 配列 | ブール値またはオブジェクト | オブジェクトの場合は、有効な JSON schema である必要があります | 
| additionalProperties | オブジェクト | ブール値またはオブジェクト | 
 デフォルトは  | 
| allOf | すべての型 | JSON schema オブジェクトの配列 | フィールドは指定されたすべてのスキーマと一致する必要があります | 
| anyOf | すべての型 | JSON schema オブジェクトの配列 | フィールドは指定されたスキーマの 1 つ以上と一致する必要があります | 
| bsonType | すべての型 | 文字列エイリアスまたは文字列エイリアスの配列 | |
| dependencies | オブジェクト | オブジェクト | フィールドまたはスキーマの依存関係を記述します | 
| 説明 | 該当なし | string | スキーマを説明し、検証に影響を与えない文字列。MongoDB 5.1 以降では、 | 
| 列挙 | すべての型 | 値の配列 | フィールドで使用可能なすべての値を列挙します | 
| exclusiveMaximum | 数値 | ブール値 | true でフィールドが数値の場合、 | 
| exclusiveMinimum | 数値 | ブール値 | true の場合、 | 
| items | 配列 | オブジェクトまたは配列 | 有効な JSON schema、または有効な JSON schema の配列である必要があります | 
| maximum | 数値 | 数値 | フィールドの最大値を示します | 
| maxItems | 配列 | integer | 配列の最大長を示します | 
| maxLength | string | integer | フィールドの最大長を示します | 
| maxProperties | オブジェクト | integer | フィールドのプロパティの最大数を示します | 
| minimum | 数値 | 数値 | フィールドの最小値を示します | 
| minItems | 配列 | integer | 配列の最小長を示します | 
| minLength | string | integer | フィールドの最小長を示します | 
| minProperties | オブジェクト | integer | フィールドのプロパティの最小数を示します | 
| multipleOf | 数値 | 数値 | フィールドは、この値の倍数である必要があります | 
| ではない | すべての型 | JSON schema オブジェクト | フィールドはスキーマと一致しない必要があります | 
| oneOf | すべての型 | JSON schema オブジェクトの配列 | フィールドは指定されたスキーマの 1 つと正確に一致する必要があります | 
| パターン | string | 正規表現を含む文字列 | フィールドは正規表現と一致する必要があります | 
| patternProperties | オブジェクト | オブジェクト | 
 | 
| properties | オブジェクト | オブジェクト | 各値も有効な JSON schema オブジェクトである有効な JSON schema | 
| 必須 | オブジェクト | 一意の文字列の配列 | オブジェクトのプロパティ セットには、配列内の指定された要素がすべて含まれている必要があります。 | 
| title | 該当なし | string | 影響のない記述的な表題用の文字列。 | 
| タイプ | すべての型 | 文字列または一意の文字列の配列 | フィールドの使用可能な JSON タイプを列挙します。使用可能なタイプは、「オブジェクト」、「配列」、「数値」、「ブール値」、「文字列」、および「null」です。 MongoDB の JSON schema の実装では、「整数」型をサポートしていません。代わりに、  | 
| uniqueItems | 配列 | ブール値 | true の場合、配列内の各項目は一意である必要があります。それ以外の場合は、一意制約は適用できません。 | 
拡張機能
MongoDB のJSON schemaの実装には、bsonTypeキーワードの追加が含まれており、これにより、$jsonSchema 演算子ですべての BSON 型を使用できます。bsonType は、$type 演算子に使用されるのと同じ文字列エイリアスを受け付けます。
省略
MongoDB の JSON schema の実装では、以下はサポートされていません。
- 以下のキーワード - $ref
- $schema
- default
- definitions
- format
- id
 
- integer型。- bsonTypeキーワードとともに BSON 型の- intまたは- longを使用する必要があります。
- JSON schema のハイパーメディアおよびリンクするプロパティ(JSON リファレンスと JSON ポインターの使用を含む)。 
- 不明なキーワード。 
例
$jsonSchema を使った例については、以下のページを参照してください。