$jsonSchema
¶3.6版的新功能。
该$jsonSchema
运营商相匹配满足指定JSON Schema文档。
的$jsonSchema
操作者表达的语法如下:
根据JSON Schema标准的草稿4格式化JSON Schema对象的位置。
例如:
有关MongoDB支持的关键字列表,请参阅可用关键字。
该featureCompatibilityVersion必须设置为
"3.6"
以使用或更高$jsonSchema
。
您可以$jsonSchema
在文档验证器中使用来对插入和更新操作强制执行指定的架构:
以下db.createCollection()
方法创建一个名为的集合,students
并使用该$jsonSchema
运算符来设置架构验证规则:
给定validator
为集合创建的值,以下插入操作将失败,因为gpa
当validator
需要时为整数double
。
该操作返回以下错误:
将更gpa
改为双精度后,插入成功:
该操作返回以下内容:
您可以$jsonSchema
在查询条件中使用读写操作在集合中查找满足指定架构的文档。
例如,inventory
使用以下文档创建样本集合:
接下来,定义以下示例架构对象:
您可以$jsonSchema
用来查找集合中满足该模式的所有文档:
您可以将$jsonSchema
与一起使用,$nor
以找到不满足该架构的所有文档:
或者,您可以更新不满足该架构的所有文档:
或者,您可以删除不符合该架构的所有文档:
MongoDB支持JSON Schema的草案4,包括 核心规范 和验证规范,但有所不同。有关详细信息,请参见扩展和省略。
有关JSON Schema的更多信息,请访问 官方网站。
注意
MongoDB实现了JSON模式中可用的关键字子集。有关遗漏的完整列表,请参见遗漏。
关键词 | 类型 | 定义 | 行为 |
---|---|---|---|
bsonType | 所有类型 | 字符串别名或字符串别名数组 | 接受
用于运算符的相同字符串别名$type |
枚举 | 所有类型 | 值数组 | 枚举该字段的所有可能值 |
类型 | 所有类型 | 字符串或唯一字符串数组 | 枚举该字段的可能JSON类型。可用的类型是“对象”,“数组”,“数字”,“布尔”,“字符串”和“空”。 MongoDB的JSON Schema实现不支持“整数”类型。请改用 |
所有的 | 所有类型 | JSON模式对象数组 | 字段必须匹配所有指定的架构 |
任何 | 所有类型 | JSON模式对象数组 | 栏位必须至少符合指定的架构之一 |
一个 | 所有类型 | JSON模式对象数组 | 字段必须与指定的架构之一完全匹配 |
不 | 所有类型 | JSON模式对象 | 字段不得与架构匹配 |
MultipleOf | 数字 | 数 | 字段必须是该值的倍数 |
最大 | 数字 | 数 | 指示字段的最大值 |
ExclusiveMaximum | 数字 | 布尔值 | 如果true和field是一个数字,maximum 则是一个排他的最大值。否则,这是一个包容性的最大值。 |
最低 | 数字 | 数 | 指示字段的最小值 |
独家最低 | 数字 | 布尔值 | 如果为true,minimum 则为排他性最小值。否则,这是一个包容性的最小值。 |
最长长度 | 弦 | 整数 | 指示字段的最大长度 |
minLength | 弦 | 整数 | 指示字段的最小长度 |
图案 | 弦 | 包含正则表达式的字符串 | 字段必须匹配正则表达式 |
maxProperties | 对象 | 整数 | 指示字段的最大属性数 |
minProperties | 对象 | 整数 | 指示字段的最小属性数 |
需要 | 对象 | 唯一字符串数组 | 对象的属性集必须包含数组中所有指定的元素 |
其他属性 | 对象 | 布尔值或对象 | 如果为 默认为 |
属性 | 对象 | 宾语 | 一个有效的JSON模式,其中每个值也是一个有效的JSON模式对象 |
patternProperties | 对象 | 宾语 | 除了properties 要求之外,此对象的每个属性名称都必须是有效的正则表达式 |
依存关系 | 对象 | 宾语 | 描述字段或模式依赖 |
AdditionalItems | 数组 | 布尔值或对象 | 如果是对象,则必须是有效的JSON模式 |
项目 | 数组 | 对象或数组 | 必须是有效的JSON模式,或者是有效JSON模式的数组 |
maxItems | 数组 | 整数 | 表示数组的最大长度 |
minItems | 数组 | 整数 | 表示最小数组长度 |
uniqueItems | 数组 | 布尔值 | 如果为true,则数组中的每个项目都必须是唯一的。否则,不强制执行唯一性约束。 |
标题 | 不适用 | 串 | 描述性标题字符串无效。 |
描述 | 不适用 | 串 | 一个描述架构且无效的字符串。 |
MongoDB的JSON Schema实现包括bsonType
关键字的添加,该关键字使您可以在运算符中使用所有BSON类型
$jsonSchema
。bsonType
接受用于$type
运算符的相同字符串别名。