模式验证让您可以为字段创建验证规则,例如允许的数据类型或值的范围。
MongoDB 使用灵活的模式模型,这意味着集合中的文档默认不需要具有相同的字段或数据类型。建立应用程序模式后,您可以使用模式验证来确保没有意外的模式更改或不当的数据类型出现。
对于 MongoDB Atlas 中托管的部署,您可以在用户界面中实施模式验证。
何时使用模式验证
模式验证需求取决于用户使用应用程序的方式。MongoDB 灵活的模式使您可以轻松地改进数据模型,尤其是在开发的早期阶段。但是,随着数据模型的稳定,模式验证可有效确保数据达到预期效果。模式验证对于已建立的应用程序最有用,在该应用程序中,您可以很好地了解如何组织数据。
注意
模式验证规则也很灵活,因此不需要覆盖文档中的每个字段,除非应用程序要求这样做。
您可以在以下情况下使用模式验证:
对于
events集合,确保start_date字段仅存储为日期而不是string,以便连接应用程序不会使用意外的类型。对于
store集合,请确保accepted_credit_cards字段属于您的存储接受的信用列表,例如["Visa", "MasterCard", "American Express"]。此验证可防止用户输入不支持的信用金额。对于学生集合,请确保
gpa字段始终为正浮点数。此验证可防止数据输入期间出现错误。
MongoDB 检查验证时
将模式验证规则添加到集合后:
所有文档插入必须与规则匹配。
模式验证级别定义如何将规则应用于现有文档和文档更新。如要了解更多信息,请参阅为现有文档指定验证级别。
要在集合中查找与模式验证规则不匹配的文档,请参阅查找与模式不匹配的文档。
文档验证失败时会发生什么情况
默认情况下,当插入或更新操作将导致文档无效时,MongoDB 会拒绝该操作,并且不会将文档写入集合。
或者,您可以对 MongoDB 进行配置,使其在处理违反模式的操作时,允许无效文档出现并记录警告。
要了解更多信息,请参阅选择如何处理无效文档。
开始体验
有关涉及模式验证的常见任务,请参阅以下页面:
了解详情
要学习;了解MongoDB 灵活的模式模型,请参阅MongoDB中的数据建模。