validation - 在 mongo 中验证数据的最佳方法是什么?

标签 validation mongodb

验证数据插入或更新到 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` }
})

验证仅适用于插入/更新,因此当您在旧集合上创建验证器时,以前的数据将不会被验证(您可以为以前的数据编写应用程序级别的验证)。您也可以指定validationLevelvalidationAction告诉如果文档不通过验证会发生什么。

如果您尝试使用验证失败的内容插入/更新文档(并且没有指定任何奇怪的验证级别/操作),那么您将在 writeResult 上收到错误(遗憾的是错误不会告诉你失败的原因,你只会得到默认的 validation failed):

WriteResult({
   "nInserted" : 0,
   "writeError" : {
      "code" : 121,
      "errmsg" : "Document failed validation"
   }
})

关于validation - 在 mongo 中验证数据的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2259429/

相关文章:

mongodb - mgo,mongodb : Finding documents that match one field from embedded struct

node.js - Node.js 客户端使用 maxDistance 对地理空间索引进行 MongoDB 查询失败

mongodb - 如何在 mongodb 中按多列和多个值进行分组

php - 以经过验证的形式接收空电子邮件

php - 使用 Laravel 验证检查字符串是否为 "0"

jQuery 验证 : How to not display errors? 或如何将错误显示为工具提示?

oop - 如何验证给定域的类图?

MongoDB mergeObjects 求和而不是替换

mongodb - 检测过时的mongodb elasticsearch river并重新启动它

javascript - keypress/keyup 在 Chrome 移动浏览器上不起作用