$jsonSchema(JSON Schema 校验)

最后更新:2026-10-09

$jsonSchema(JSON Schema 校验)

$jsonSchema 用 JSON Schema 草案标准校验文档结构,可作为查询条件或集合校验器。`{ $jsonSchema: { required: ['name'], properties: { age: { bsonType: 'int' } } } }`。支持必填字段、类型约束、属性模式等。注意:无法走普通索引,大集合上成本较高,多用于数据质量校验。

分类元素与求值
MongoDB 版本3.6+
示例语言mongosh (Shell)

📝 语法

{ $jsonSchema: { required: [ <字段名> ], properties: { <属性>: { <约束> } } } }

⚙️ 参数

Schema对象包含 required、properties、bsonType 等键的 JSON Schema 文档。

返回值:匹配的文档游标

▶ 示例

请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):

// $jsonSchema:name 必填且 age 必须为整数
db.users.find({
  $jsonSchema: {
    required: ['name'],
    properties: {
      age: { bsonType: 'int' }
    }
  }
})

运行结果:

// 返回 name 存在且 age 为 int 类型的文档(未声明 age 时也通过)

📌 注意事项

📚 相关教程

❓ 常见问题

Q$jsonSchema 能校验嵌套对象吗?
A能,properties 里嵌套 properties 即可逐层校验。
Q$jsonSchema 和 $type 有什么区别?
A$type 只查单一字段类型;$jsonSchema 校验整个文档结构,支持必填、嵌套、多字段。
Q能在集合创建时用 $jsonSchema 吗?
A能,validator: { $jsonSchema: {...} } 配合 db.createCollection 作为写入校验器。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏