定義
構文
$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は、いくつか違いはあるものの、4 コア仕様 および 検証仕様 を含むJSON schemaのドラフト をサポートしています。詳細については、「 拡張機能 と 省略 」を参照してください。
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
を使った例については、以下のページを参照してください。