Mongo Document 校验
程序员文章站
2022-03-23 13:38:03
Mongo Datamodel Validation mongo insert,update document时候的校验规则 指定validation rules new collection existing collection json schema (version =3.6) $jsonS ......
mongo datamodel validation
mongo insert,update document时候的校验规则
指定validation rules
- new collection
db.createcollection(...,{validator:})
-
existing collection
collmod command
json schema (version >=3.6)
$jsonschema匹配满足指定的json schema
语法
{ $jsonschema: <json schema object> }
例如
db.createcollection("students", { validator: { $jsonschema: { bsontype: "object", required: [ "name", "year", "major", "address" ], properties: { name: { bsontype: "string", description: "must be a string and is required" }, year: { bsontype: "int", minimum: 2017, maximum: 3017, description: "must be an integer in [ 2017, 3017 ] and is required" }, major: { enum: [ "math", "english", "computer science", "history", null ], description: "can only be one of the enum values and is required" }, gpa: { bsontype: [ "double" ], description: "must be a double if the field exists" }, address: { bsontype: "object", required: [ "city" ], properties: { street: { bsontype: "string", description: "must be a string if the field exists" }, city: { bsontype: "string", "description": "must be a string and is required" } } } } } } })
其它查询表达式
除$near,$nearsphere,$text,$where
外
db.createcollection( "contacts", { validator: { $or: [ { phone: { $type: "string" } }, { email: { $regex: /@mongodb\.com$/ } }, { status: { $in: [ "unknown", "incomplete" ] } } ] } } )
行为
validation 在insert,update 触发,collection新添加 validation,之前的document不会触发校验
validationlevel
validationlevel用来决定对于校验,mongo采用什么样的操作
-
strict(default)
应用校验到所有insert,update
-
moderate
应用校验到满足校验的document
-
off
关闭校验
validationaction
validationaction是mongo用来决定在没有通过校验时做什么操作 -
error (default)
拒绝所有违反校验的insert,update
-
warn
mongo会记录下来但会让其通过校验
不能在admin,local,config库和system.*集合中设置校验
上一篇: 海量数据的分页怎么破?
下一篇: 网站的banner和导航栏的用途
推荐阅读
-
vue 使用自定义指令实现表单校验的方法
-
php实现信用卡校验位算法THE LUHN MOD-10示例
-
JQuery中window.onload函数与$(document).ready()的区别实例讲解
-
js兼容写法为document.documentElement.scrollTop||window.pageYOffset||document.body.scrollTop(代码实例)
-
ThinkPHP框架结合Ajax实现用户名校验功能示例
-
springboot使用Validator校验方式
-
vue中vee validate表单校验的几种基本使用
-
Jquery中$(document).ready(function(){ })函数的使用详解
-
zf框架的校验器InArray使用示例
-
python 多个参数不为空校验方法