mongodb validation--像关系型数据库表去使用mongodb
例子:
定义表:
db.createCollection( "contacts", { validator: { $and: [ { phone: { $type: "string" } }, { email: { $type: "double"} }, { status: { $in: [ "Unknown", "Incomplete" ] } } ] } } )
表名:contacts ,必修包含的字段: phone 且类型是string,email 且类型是double,status 且值必须是Unkown或Incomplete。
可以根据以下命令进行修改
db.runCommand( { collMod: "contacts", validator: { $and: [ { phone: { $type: "string" } }, { email: { $regex: /@mongodb.com$/ } }, { status: { $in: [ "Unknown", "Incomplete" ] } } ] }, validationLevel: "moderate",validationAction: "error"
} )
该命令示例 修改了email必须以@mongodb.com值结尾。
validationLevel的取值意义:
VALIDATIONLEVEL | DESCRIPTION |
---|---|
“off” | 关闭数据校验。 |
“strict” | 默认值。对所有的update和insert有效。 |
“moderate” | 仅对insert和满足校验规则的document做update有效。对已存在的不符合校验规则的document无效。 |
validationAction的取值意义:
“error” | 默认值。document必须满足校验规则,才能被写入数据哭。 |
“warn” | document不符合校验规则的,MongoDB允许写入,但会记录一条告警到mongod.log中去。日志内容记录报错信息以及该document的完整记录。 |
备注:db.getCollectionInfos() 命令可以查看表字段的限制信息。