集合可以配置为根据 JSON 模式验证文档。这使您能够在将文档插入或更新到集合中之前,要求这些文档具有特定的结构。您指定的 JSON 模式如 https://json-schema.fullstack.org.cn 中所述。模式验证由服务器执行,如果集合中的文档未根据分配的 JSON 模式进行验证,则会返回错误消息。有关 MySQL 中 JSON 模式验证的更多信息,请参见 JSON 模式验证函数。本节介绍如何配置集合以根据 JSON 模式验证文档。
要启用或修改 JSON 模式验证,您可以向集合提供一个如下所示的 validation
JSON 对象
Press CTRL+C to copy{ validation: { level: "off|strict", schema: "json-schema" } }
这里,validation
是一个 JSON 对象,其中包含用于配置 JSON 模式验证的键。第一个键是 level
,它可以取值为 strict
或 off
。第二个键,schema
,是一个 JSON 模式,如 https://json-schema.fullstack.org.cn 中所定义。如果 level
键设置为 strict
,则在将文档添加到集合中时,或如果文档已存在于集合中,则在通过某些操作更新文档时,将根据 json-schema
对文档进行验证。如果文档未通过验证,服务器将生成错误,并且操作将失败。如果 level
键设置为 off
,则不会根据 json-schema
对文档进行验证。
要在你创建新集合时启用 JSON 模式验证,请提供一个如上所述的 validation
JSON 对象。例如,要创建用于保存经度和纬度值的集合,并要求验证这些值是否为数字
Press CTRL+C to copycoll = schema.create_collection("longlang", validation={ "level": "strict", "schema": { "id": "https://json-schema.fullstack.org.cn/geo", "$schema": "https://json-schema.fullstack.org.cn/draft-06/schema#", "description": "A geographical coordinate", "type": "object", "properties": { "latitude": { "type": "number" }, "longitude": { "type": "number" } }, "required": ["latitude", "longitude"] } })
您可以修改集合以控制文档的 JSON 模式验证。例如,您可以启用或禁用验证,或更改文档验证所依据的 JSON 模式。
为了修改集合的 JSON 模式验证,请在调用 Collection.modify() 方法时提供一个 validation
JSON 对象。例如,要修改集合以禁用 JSON 模式验证,validation
对象将为
Press CTRL+C to copy{ validation: { "level": "off" } }
在修改 JSON 模式验证时,您可以只提供 level
选项来更改模式验证的级别。例如,传递上面显示的 JSON 对象以禁用 JSON 模式验证。这不会更改之前指定的 JSON 模式,也不会从集合中删除 JSON 模式。或者,您可以只通过传递新的 JSON 模式对象来修改模式。