验证数据插入或更新到 MongoDB 的最佳方法是什么?是编写某种服务器执行的 Javascript 代码来进行验证吗?
最佳答案
从 MongoDB 3.2 开始,他们添加了 document validation (slides)。
您可以为每个集合指定验证规则,使用 validator使用几乎所有 mongo 查询运算符的选项(除了 $geoNear
、$near
、$nearSphere
、$text
和$where
)。
要使用验证器创建新集合,请使用:
db.createCollection("your_coll", {
validator: { `your validation query` }
})
要向现有集合添加验证器,您可以添加验证器:
db.createCollection("your_coll", {
validator: { `your validation query` }
})
验证仅适用于插入/更新,因此当您在旧集合上创建验证器时,以前的数据将不会被验证(您可以为以前的数据编写应用程序级别的验证)。您也可以指定validationLevel和 validationAction告诉如果文档不通过验证会发生什么。
如果您尝试使用验证失败的内容插入/更新文档(并且没有指定任何奇怪的验证级别/操作),那么您将在 writeResult
上收到错误(遗憾的是错误不会告诉你失败的原因,你只会得到默认的 validation failed
):
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 121,
"errmsg" : "Document failed validation"
}
})
关于validation - 在 mongo 中验证数据的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2259429/