$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 schema 中的可用关键字的一个子集。有关省略项的完整列表,请参阅省略项。
Keyword | 类型 | 定义 | 行为 |
---|---|---|---|
additionalItems | 数组 | 布尔值或对象 | 如果是对象,则必须是有效的 JSON 模式 |
additionalProperties | 对象 | 布尔值或对象 | 如果为 默认值为 |
allOf | 所有类型 | JSON 模式对象数组 | 字段必须符合所有指定的模式 |
anyOf | 所有类型 | JSON 模式对象数组 | 字段必须至少与一个指定模式匹配 |
bsonType | 所有类型 | 字符串别名或字符串别名数组 | |
dependencies | 对象 | 对象 | 描述字段或模式依赖项 |
描述 | 不适用 | 字符串 | 描述模式且对验证没有影响的字符串。从 MongoDB 5.1 开始,如果指定了 description 字段,则当文档验证失败时,MongoDB 将在错误输出中包含 description 。 |
枚举 | 所有类型 | 值数组 | 枚举字段的所有可能值 |
exclusiveMaximum | 数字 | 布尔 | 如果为 true 并且字段是数字,则 maximum 为排他式最大值。否则为包含式最大值。 |
exclusiveMinimum | 数字 | 布尔 | 如果为 true,则 minimum 为排他式最小值。否则为包含式最小值。 |
商品 | 数组 | 对象或数组 | 必须是有效的 JSON 模式或有效 JSON 模式的数组 |
最大值 | 数字 | 数字 | 指示字段的最大值 |
MaxItems | 数组 | 整型 | 指示数组的最大长度 |
maxLength | 字符串 | 整型 | 指示字段的最小长度 |
maxProperties | 对象 | 整型 | 指示字段的最小属性数量 |
最低 | 数字 | 数字 | 指示字段的最小值 |
minItems | 数组 | 整型 | 指示数组的最小长度 |
minLength | 字符串 | 整型 | 指示字段的最小长度 |
minProperties | 对象 | 整型 | 指示字段的最小属性数量 |
multipleOf | 数字 | 数字 | 字段必须是此值的倍数 |
not | 所有类型 | 一个 JSON 模式对象 | 字段不得与模式匹配 |
oneOf | 所有类型 | JSON 模式对象数组 | 字段必须与至少一个指定模式匹配 |
模式 | 字符串 | 包含正则表达式的字符串 | 字段必须匹配正则表达式 |
patternProperties | 对象 | 对象 | 除了 properties 要求外,该对象的每个属性名称都必须是有效的正则表达式 |
属性 | 对象 | 对象 | 有效的 JSON 模式,其中每个值也是有效的 JSON 模式对象 |
必需 | 对象 | 唯一字符串的数组 | 对象的属性集必须包含数组中的所有指定元素 |
标题 | 不适用 | 字符串 | 没有效果的描述性标题字符串。 |
类型 | 所有类型 | 字符串或唯一字符串的数组 | 枚举字段可能的 JSON 类型。可用类型为 "object"、"array"、"number"、"boolean"、"string" 和 "null"。 JSON 模式的 MongoDB 实施不支持 "integer" 类型。改用 |
uniqueItems | 数组 | 布尔 | 如果为 true,则数组中的每项都必须唯一。否则,不实施唯一性约束。 |
扩展
JSON 模式的 MongoDB 实施包括添加 bsonType
关键字,这样,将能够在 $jsonSchema
操作符中使用所有 BSON 类型。bsonType
接受用于 $type
操作符的相同字符串别名。
省略项
JSON 模式的 MongoDB 实施不支持以下内容:
示例
有关使用 $jsonSchema
的示例,请参阅以下页面: