Docs 菜单
Docs 主页
/
MongoDB Manual
/ / / /

$jsonSchema

在此页面上

  • 定义
  • 语法
  • JSON schema
  • 举例
$jsonSchema

$jsonSchema 操作符匹配满足指定 JSON 模式的文档。

$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" }
}
}
}
}
}

MongoDB 支持 JSON schema 草案 4,包括核心规范验证规范,但有一些区别。有关详细信息,请参阅扩展省略

有关 JSON schema 的更多信息,请参阅官方网站。

可以在 JSON 模式中指定以下关键字。

注意

MongoDB 实施 JSON schema 中的可用关键字的一个子集。有关省略项的完整列表,请参阅省略项

Keyword
类型
定义
行为
additionalItems
数组
布尔值或对象
如果是对象,则必须是有效的 JSON 模式
additionalProperties
对象
布尔值或对象

如果为 true,则允许使用其他字段。如果为 false,则不允许。如果指定了有效的 JSON 模式对象,则其他字段必须根据该模式进行验证。

默认值为 true

allOf
所有类型
JSON 模式对象数组
字段必须符合所有指定的模式
anyOf
所有类型
JSON 模式对象数组
字段必须至少与一个指定模式匹配
bsonType
所有类型
字符串别名或字符串别名数组
接受用于 操作符的相同$type 字符串别名
dependencies
对象
对象
描述字段或模式依赖项
描述
不适用
字符串
描述模式且对验证没有影响的字符串。从 MongoDB 5.1 开始,如果指定了 description 字段,则当文档验证失败时,MongoDB 将在错误输出中包含 description
Enum
所有类型
值数组
枚举字段的所有可能值
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" 类型。改用 bsonType 关键字和 "int" 或 "long" 类型。

uniqueItems
数组
布尔
如果为 true,则数组中的每项都必须唯一。否则,不实施唯一性约束。

JSON 模式的 MongoDB 实施包括添加 bsonType 关键字,这样,将能够在 $jsonSchema 操作符中使用所有 BSON 类型。bsonType 接受用于 $type 操作符的相同字符串别名。

JSON 模式的 MongoDB 实施不支持以下内容:

  • JSON Schema 规范的草案 4 中的超文本定义

  • 关键字:

    • $ref

    • $schema

    • default

    • definitions

    • format

    • id

  • integer 类型。必须使用带有 bsonType 关键字的 BSON 类型 intlong

  • JSON 模式的超媒体和链接属性,包括 JSON 引用和 JSON 指针的使用。

  • 未知关键字。

有关使用 $jsonSchema 的示例,请参阅以下页面:

后退

$expr