如何对 MongoDB 中的文档值进行类型检查?
Posted
技术标签:
【中文标题】如何对 MongoDB 中的文档值进行类型检查?【英文标题】:How to enforce type check for a value of document in MongoDB? 【发布时间】:2020-10-26 22:34:37 【问题描述】:在 RDBMS 中,每列都有CHAR
、INTEGER
等类型。
在 MongoDB 中,使用 mongo shell api 在people
集合中添加以下文档:
> db.people.insert("name": 1)
MongoDB 允许为 "name"
键添加值 1
,这是不正确的
如何在向集合中添加文档之前强制进行类型检查?
【问题讨论】:
【参考方案1】:你可以这样做。这只是一个例子。
db.createCollection( "people" ,
validator:
$jsonSchema:
bsonType: "object",
additionalProperties: false, //wont't allow additional properties to be added, Use if you want to restrict people from adding extra fields.
required: ["name","age"], //document must contain these fields, else operation will fail/log warning depending on `validationLevel` and `validationAction`
properties:
_id :
bsonType: "objectId" ,
name:
bsonType: "string", //type of name
description: "required and must be a string" ,
age:
bsonType: "int", //type of age
minimum: 0,
maximum: 100,
description: "required and must be in the range 0-100"
,
validationLevel: "moderate",
validationAction: "error"
)
要在创建新集合时指定验证规则,请使用 db.createCollection()
和 validator
选项。然后在文档validator
中使用$jsonSchema
对insert
和update
操作执行指定的架构。
validationLevel 选项,用于确定 MongoDB 在更新期间对现有文档应用验证规则的严格程度,以及
validationAction 选项,它决定 MongoDB 是否应该错误并拒绝违反验证规则的文档,或者警告日志中的违规但允许无效文档。
要将文档验证添加到现有集合,请使用带有validator
选项的collMod
命令。
当您向集合添加验证时,现有文档在修改之前不会进行验证检查。
请仔细阅读这些链接:-
https://docs.mongodb.com/manual/core/schema-validation/
https://docs.mongodb.com/manual/reference/operator/query/jsonSchema/#op._S_jsonSchema
【讨论】:
以上是关于如何对 MongoDB 中的文档值进行类型检查?的主要内容,如果未能解决你的问题,请参考以下文章
如何选择然后对 MongoDB 文档进行排序,然后找到下一个要挖掘的文档?
如何选择然后对 MongoDB 文档进行排序,然后找到下一个要挖掘的文档?