文档菜单
文档首页
/
MongoDB 手册
/ / / /

$jsonSchema

本页内容

  • 定义
  • 语法
  • JSON 模式
  • 示例
$jsonSchema

$jsonSchema运算符匹配满足指定JSON Schema的文档。

$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 模式中的部分关键词。有关省略的完整列表,请参阅省略。

关键词
类型
定义
行为
additionalItems
arrays
boolean 或 object
如果是一个对象,必须是一个有效的 JSON 模式
additionalProperties
objects
boolean 或 object

如果 true,则允许额外的字段。如果 false,则不允许。如果指定了一个有效的 JSON 模式对象,则额外的字段必须与该模式进行验证。

默认为 true

allOf
所有类型
JSON 模式对象的数组
字段必须匹配所有指定的模式
anyOf
所有类型
JSON 模式对象的数组
字段必须匹配指定的至少一个模式
bsonType
所有类型
字符串别名或字符串别名的数组
接受相同的字符串别名 用于 $type 操作符
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" 类型。请使用 bsonType 关键字和 "int" 或 "long" 类型。

uniqueItems
arrays
布尔值
如果为真,数组中的每个项目必须是唯一的。否则,不强制执行唯一性约束。

MongoDB对JSON Schema的实现包括增加 bsonType 关键字,它允许你在 $jsonSchema 操作符中使用所有 BSON 类型。bsonType 接受与 $type 操作符相同的字符串别名。

以下内容不支持在MongoDB对JSON Schema的实现中

  • 超文本定义在JSON Schema规范草稿4中。

  • 关键字

    • $ref

    • $schema

    • default

    • definitions

    • format

    • id

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

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

  • 未知关键字。

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

返回

$expr