スキーマの検証ルールを設定する
検証タブ
Validationタブでは、コレクションのスキーマ検証ルールを管理できます。
スキーマの検証により、特定の形状に合致する、フィールド内の特定の範囲の値のみ許可するなど、コレクション内のすべてのドキュメントが一連の所定のルールに従っていることを確認することができます。
検証ルール
検証エディタでは、 JSON スキーマの検証と、 クエリ演算子を使用したクエリ式による検証をサポートしています。Updateボタンをクリックすると、Compass の画面がアップデートされ、コレクション内の検証に合格したドキュメントと、検証に合格しなかったドキュメントが表示されます。
JSON スキーマ検証
JSON スキーマ検証を指定するには、 $jsonSchema演算子を使用します。
{ $jsonSchema: { required: ['name', 'borough'], // the name and borough fields are required properties: { cuisine: { bsonType: "string", description: "must be a string" } } } }
$jsonSchema 演算子は、検証ルールを指定するためのさまざまなキーワードをサポートしています。例:
required
配列はドキュメント内の必須フィールドを定義します。properties
オブジェクトは、特定のドキュメントフィールドのルールを定義します。
次の検証例を検討します。
{ $jsonSchema: { bsonType: "object", required: [ "address", "borough", "name" ], properties: { address: { bsonType: "object", properties: { coord: { bsonType: "array", items: [ { bsonType: "double", minimum: -180, maximum: 180, exclusiveMaximum: false, description: "must be a number in [ -180, 180 ]" }, { bsonType: "double", minimum: -90, maximum: 90, exclusiveMaximum: false, description: "must be a number in [ -90, 90 ]" } ] } }, description: "must be an object" }, borough: { bsonType: "string", enum: [ "Manhattan", "Brooklyn", "Queens", "Bronx", "Staten Island" ], description: "must be one of the enum strings" } } } }
この検証では以下を指定します。
使用可能なすべての$jsonSchema
キーワードについては、MongoDB マニュアルの $jsonSchema ページを参照してください。
クエリ演算子を使用する検証
クエリ演算子を使用して検証を指定することもできます。ただし、次のクエリ演算子は除外されます。 $near
、 $nearSphere
、 $text
、および$where
。
{ $or: [ { name: { $type: "string" } }, { borough: { bsonType: "string", enum: [ "Manhattan", "Brooklyn", "Queens", "Bronx", "Staten Island" ], description: "must be one of the enum strings" } } ] }
この検証を利用する場合、以下の条件のいずれか1つを満たす必要があります。
name
フィールドは BSON 型の文字列である必要があります。borough
フィールドは列挙文字列の 1 つである必要があります。
検証アクションとレベル
上部で、 Validation Action と Validation Levelを指定します。
検証アクションは、
warn
のみで無効なドキュメントを受け入れるか、error
を出して無効なドキュメントを拒否するかを決定します。検証レベルは、MongoDB が既存のドキュメントに検証ルールをどの程度厳密に適用するかを決定します。
Strict
検証により、すべてのドキュメントの挿入とアップデートにルールが適用されます。Moderate
検証は、新しいドキュメントと既存の有効なドキュメントにのみ適用されます。既存の無効なドキュメントは影響を受けません。
検証アクションとレベルの詳細については、MongoDB マニュアルの「検証ルールの指定」を参照してください。
制限
Atlas Data Federation に接続している場合、Validation タブは使用できません。
MongoDB Compass Readonly Edition では検証ルールの表示のみが可能です。 検証ルールの作成および編集は許可されていません。 .. END-COMPASS のみ