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

枚举

所有类型

值数组

枚举字段的所有可能值

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