$jsonSchema (JSON スキーマ検証)

最終更新:2026-10-09

$jsonSchema (JSON スキーマ検証)

$jsonSchema は、JSON Schema ドラフト標準に基づいてドキュメント構造を検証します。クエリ条件としても、コレクションのバリデータとしても使えます。`{ $jsonSchema: { required: ['name'], properties: { age: { bsonType: 'int' } } } }` のように指定します。必須フィールド、型制約、プロパティパターンをサポートしますが、通常のインデックスは使えず、大規模コレクションではコストが高いため、データ品質チェックに適しています。

カテゴリ要素と評価
MongoDB バージョン3.6+
例の言語mongosh(シェル)

📝 構文

{ $jsonSchema: { required: [ <field name> ], properties: { <property>: { <constraint> } } } }

⚙️ パラメータ

スキーマオブジェクトrequired、properties、bsonType などのキーを持つ JSON Schema ドキュメント。

戻り値:一致するドキュメントのカーソル

▶ 例

以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):

// $jsonSchema: name が必須、age は int
db.users.find({
  $jsonSchema: {
    required: ['name'],
    properties: {
      age: { bsonType: 'int' }
    }
  }
})

出力:

// name が存在し age が int 型のドキュメントを返す(age 未宣言でも合格)

📌 注意事項

📚 関連チュートリアル

❓ よくある質問

Q$jsonSchema はネストしたオブジェクトを検証できますか?
Aはい。properties の中に properties をネストして、レベルごとに検証できます。
Q$jsonSchema と $type の違いは?
A$type は 1 つのフィールドの型を判定します。$jsonSchema は required、ネスト、複数フィールドを使ったドキュメント全体の構造を検証します。
Qコレクション作成時に $jsonSchema を使えますか?
Aはい。db.createCollection に validator: { $jsonSchema: {...} } を渡すと、書き込み時バリデータとして機能します。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%