Sim*_*ley 10 validation mongodb
验证插入或更新到MongoDB中的数据的最佳方法是什么?是编写某种服务器执行的Javascript代码进行验证吗?
Sal*_*ali 10
从MongoDB 3.2开始,他们添加了文档验证(幻灯片).
您可以为每个集合指定验证规则,使用验证器使用几乎所有的Mongo的查询操作选项(除$geoNear,$near,$nearSphere,$text,和$where).
要使用验证器创建新集合,请使用:
db.createCollection("your_coll", {
validator: { `your validation query` }
})
Run Code Online (Sandbox Code Playgroud)
要将验证器添加到现有集合,您可以添加验证器:
db.createCollection("your_coll", {
validator: { `your validation query` }
})
Run Code Online (Sandbox Code Playgroud)
验证仅适用于插入/更新,因此当您在旧集合上创建验证器时,将不会验证先前的数据(您可以为以前的数据编写应用程序级别验证).您还可以指定validationLevel和validationAction来说明如果文档未通过验证将会发生什么.
如果您尝试使用未通过验证的内容插入/更新文档(并且未指定任何奇怪的validationLevel/action),那么您将收到错误writeResult(遗憾的是,错误不会告诉您失败的原因并且您只能获得默认值validation failed):
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 121,
"errmsg" : "Document failed validation"
}
})
Run Code Online (Sandbox Code Playgroud)
MongoDB没有约束或触发器,因此应用程序必须验证数据.
如果存在无效数据,您还可以编写每天检查一次或更多的Javascript脚本.您可以使用它来检查应用程序的业务逻辑的质量.
| 归档时间: |
|
| 查看次数: |
10751 次 |
| 最近记录: |