$jsonSchema
定义
语法
$jsonSchema
运算符表达式具有以下语法
{ $jsonSchema: <JSON Schema object> }
其中JSON Schema对象格式遵循JSON Schema标准的第4个草案.
{ <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 模式中指定以下关键词。
注意
MongoDB 实现了 JSON 模式中的部分关键词。有关省略的完整列表,请参阅省略。
关键词 | 类型 | 定义 | 行为 |
---|---|---|---|
additionalItems | arrays | boolean 或 object | 如果是一个对象,必须是一个有效的 JSON 模式 |
additionalProperties | objects | boolean 或 object | 如果 默认为 |
allOf | 所有类型 | JSON 模式对象的数组 | 字段必须匹配所有指定的模式 |
anyOf | 所有类型 | JSON 模式对象的数组 | 字段必须匹配指定的至少一个模式 |
bsonType | 所有类型 | 字符串别名或字符串别名的数组 | |
dependencies | objects | 对象 | 描述字段或模式依赖关系 |
description | N/A | 字符串 | 描述模式且不影响验证的字符串。从 MongoDB 5.1 开始,如果指定了 description 字段,当文档验证失败时,MongoDB 将在错误输出中包含 description 。 |
enum | 所有类型 | 值的数组 | 枚举字段的可能值 |
exclusiveMaximum | 数字 | 布尔值 | 如果为真且字段是数字,则 maximum 是一个排他最大值。否则,它是一个包含最大值。 |
exclusiveMinimum | 数字 | 布尔值 | 如果为真,则 minimum 是一个排他最小值。否则,它是一个包含最小值。 |
items | arrays | 对象或数组 | 必须是有效的 JSON 模式,或者有效 JSON 模式的数组 |
maximum | 数字 | 数字 | 指示字段的最高值 |
maxItems | arrays | 整数 | 指示数组的最大长度 |
maxLength | 字符串 | 整数 | 指示字段的最高长度 |
maxProperties | objects | 整数 | 指示字段的属性最大数量 |
minimum | 数字 | 数字 | 指示字段的最低值 |
minItems | arrays | 整数 | 表示数组的最小长度 |
minLength | 字符串 | 整数 | 表示字段的最小长度 |
minProperties | objects | 整数 | 表示字段的最小属性数量 |
multipleOf | 数字 | 数字 | 字段必须是此值的倍数 |
not | 所有类型 | 一个JSON Schema对象 | 字段不能匹配该模式 |
oneOf | 所有类型 | JSON 模式对象的数组 | 字段必须与指定的模式之一完全匹配 |
pattern | 字符串 | 包含正则表达式的字符串 | 字段必须匹配正则表达式 |
patternProperties | objects | 对象 | 除了 properties 要求外,该对象的每个属性名都必须是有效的正则表达式 |
properties | objects | 对象 | 一个有效的JSON Schema,其中每个值也都是有效的JSON Schema对象 |
required | objects | 唯一字符串数组 | 对象属性集必须包含数组中指定的所有元素 |
title | N/A | 字符串 | 一个描述性标题字符串,无实际效果。 |
type | 所有类型 | 字符串或唯一字符串数组 | 列出字段的可能JSON类型。可用类型为 "object","array","number","boolean","string" 和 "null"。 MongoDB对JSON Schema的实现不支持 "integer" 类型。请使用 |
uniqueItems | arrays | 布尔值 | 如果为真,数组中的每个项目必须是唯一的。否则,不强制执行唯一性约束。 |
扩展
MongoDB对JSON Schema的实现包括增加 bsonType
关键字,它允许你在 $jsonSchema
操作符中使用所有 BSON 类型。bsonType
接受与 $type
操作符相同的字符串别名。
省略
以下内容不支持在MongoDB对JSON Schema的实现中
示例
有关使用$jsonSchema
的示例,请参阅以下页面