码迷,mamicode.com
首页 > 其他好文 > 详细

Mongo Document 校验

时间:2019-07-26 10:50:32      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:mail   math   sci   unknown   one   表达式   data   man   address   

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.*集合中设置校验

Mongo Document 校验

标签:mail   math   sci   unknown   one   表达式   data   man   address   

原文地址:https://www.cnblogs.com/szbnl/p/11245207.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!