4.6 JSON模式验证

从8.0.21版本开始,集合可以配置为根据JSON模式验证文档。这使您能够要求文档具有某种结构,然后才能在集合中插入或更新它们。您可以指定一个JSON模式http://json-schema.org。模式验证由服务器从版本8.0.19开始执行,如果集合中的文档没有根据分配的JSON模式进行验证,则返回错误消息。有关MySQL中JSON模式验证的更多信息,请参见JSON模式验证函数。本节描述如何配置集合以根据JSON模式验证文档。

要启用或修改JSON模式验证,需要向集合提供验证JSON对象如下:

{validation: {level: "off|strict", schema: "json-schema"}}

在这里,验证是一个JSON对象,它包含可用于配置JSON模式验证的键。第一个关键是水平,它可以取值严格的或者。第二个键,模式,是一个JSON模式,定义在http://json-schema.org。如果水平键设置为严格的,根据json-schema当它们被添加到集合中时,或者如果它们已经在集合中,当它们被某些操作更新时。如果文档不验证,服务器将生成一个错误,操作将失败。如果水平键设置为,文档不根据json-schema

创建已验证的集合

在创建新集合时启用JSON架构验证,请提供a验证如上所述。例如,要创建一个保存经度和纬度值的集合,并要求将这些值作为数字进行验证:

科尔=模式。create_collection("longlang", validation={"level": "strict", "schema": {"id": "http://json-schema.org/geo", "$schema": "http://json-schema.org/draft-06/schema#", "description": "地理坐标","type": "object", "properties": {"latitude": {"type": "number"}, "longitude": {"type": "number"}}, "required":[纬度,经度]}})

修改验证集合

您可以修改一个集合来控制文档的JSON架构验证。例如,您可以启用或禁用验证或更改文档验证的JSON模式。

要修改集合的JSON模式验证,请提供一个验证对象调用Collection.modify ()方法。例如,要修改集合以禁用JSON模式验证,则使用验证对象是:

{validation: {"level": "off"}}

当修改JSON模式验证时,您可以提供水平选项仅更改模式验证的级别。例如,传递上面显示的JSON对象来禁用JSON模式验证。这不会更改先前指定的JSON模式,也不会从集合中删除JSON模式。或者,您可以仅通过传递一个新的JSON模式对象来修改模式。