首页 > 解决方案 > 使用验证规则更新 mongodb 集合时如何禁止未知属性?

问题描述

这是https://stackoverflow.com/posts/38101932的副本 但是由于那里的 anwser 已经过时并且链接的“解决方案”不是直接答案,我再次发布它。

我想禁止未在架构中声明的额外属性。例如,如果架构说:

"group1.a": {
  "$type": "int"
},
"group1.b": {
  "$type": "int"
}

我希望以下文件失败:

{
   "group1": {
      "a": 1,
      "b": 2,
      "c": 3
   }
}

我究竟如何利用 jsonShema 来完成这项工作?

标签: mongodb

解决方案


找到了!

有两件事必须做:

  1. 添加additionalProperties: false$jsonSchema
  2. 添加_id具有bsonType: objectId显式属性的字段,否则每次更新都会失败(除非您在将新文档插入集合时未显式设置 _id)。

推荐阅读