Docs 菜单
Docs 主页
/
MongoDB Compass
/

为模式设置验证规则

在此页面上

  • 验证标签页
  • 验证规则
  • 验证操作和级别
  • 限制

Validation (验证)标签页允许您管理集合的模式验证规则

模式验证可确保集合中的所有文档均遵循一组既定规则,例如符合特定的形状或只允许在字段中使用指定范围的值。

验证视图
点击放大

在 1.35.1 版本中更新

验证编辑器支持 JSON schema 验证,以及使用查询操作符通过查询表达式进行验证。单击 Update 按钮后,Compass 会更新以显示集合中通过验证的文档和未通过验证的文档。

要指定 JSON schema 验证,使用 $jsonSchema 操作符。

{
$jsonSchema: {
required: ['name', 'borough'], // the name and borough fields are required
properties: {
cuisine: {
bsonType: "string",
description: "must be a string"
}
}
}
}

$jsonSchema 操作符支持各种关键字,用于指定验证规则。例如:

  • required 数组可以定义文档中的必填字段。

  • properties对象定义特定文档字段的规则。

考虑以下验证示例:

{
$jsonSchema: {
bsonType: "object",
required: [ "address", "borough", "name" ],
properties: {
address: {
bsonType: "object",
properties: {
coord: {
bsonType: "array",
items: [
{
bsonType: "double",
minimum: -180,
maximum: 180,
exclusiveMaximum: false,
description: "must be a number in [ -180, 180 ]"
},
{
bsonType: "double",
minimum: -90,
maximum: 90,
exclusiveMaximum: false,
description: "must be a number in [ -90, 90 ]"
}
]
}
},
description: "must be an object"
},
borough: {
bsonType: "string",
enum: [ "Manhattan", "Brooklyn", "Queens", "Bronx", "Staten Island" ],
description: "must be one of the enum strings"
}
}
}
}

此验证指定:

有关所有可用的 $jsonSchema 关键字,请参阅 MongoDB 手册中的 $jsonSchema 页面。

您也可以使用查询操作符来指定验证,但以下查询操作符除外:$near$nearSphere$text$where.

{
$or: [
{ name: { $type: "string" } },
{ borough: {
bsonType: "string",
enum: [ "Manhattan", "Brooklyn", "Queens", "Bronx", "Staten Island" ],
description: "must be one of the enum strings"
} }
]
}

使用此验证时,以下条件之一必须为 true:

  • name字段必须是BSON类型字符串。

  • borough字段必须是枚举字符串之一。

在顶部指定 Validation ActionValidation Level

  • 验证操作确定是warn但接受无效文档,还是error并拒绝无效文档。

  • 验证级别确定 MongoDB 将验证规则应用于现有文档的严格程度。

    • Strict 验证将您的规则应用于所有文档插入和更新。

    • Moderate 验证仅将规则应用于新文档和现有的有效文档。现有的无效文档不受影响。

有关验证操作和级别的详细信息,请参阅 MongoDB 手册中的指定验证规则

提示

另请参阅:

如果您已连接到Atlas Data Federation ,则Validation标签页不可用。

MongoDB Compass Readonly Edition 中,您只能查看验证规则。不允许创建和编辑验证规则。

后退

性能见解