Mongo Document 校验
程序员文章站
2022-06-23 17:39:07
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.*集合中设置校验
下一篇: 怎样预防癌症 红葡萄酒可抗癌