即使在mongodb中有验证器后也没有收到任何错误消息

时间:2016-10-22 07:03:51

标签: mongodb mongodb-query

我在mongodb 3.2

中创建了一个名为'contacts'的集合,并进行了以下验证
db.createCollection( "contacts",
   {
      validator: { $or:
         [
            { phone: { $type: "string" } },
            { email: { $regex: /@mongodb\.com$/ } },
            { status: { $in: [ "Unknown", "Incomplete" ] } }
         ]
      },
      validationAction: "error"
   }
)

之后我插入文件下面:

db.contacts.insert( { name: "Girish Gupta", status: "Updated" } )
WriteResult({ "nInserted" : 1 })

由于我没有插入有效状态,因此应该有一些错误。 但我没有收到任何错误。

1 个答案:

答案 0 :(得分:0)

我今天遇到了同样的问题。

事实上,该文件刚刚指出了下面可能存在的问题:

Restrictions说:

  

您无法在admin,local和config数据库中为集合指定验证程序。   您无法为system。* collections指定验证器。

Bypass Document Validation

  

...对于已启用访问控制的部署,要绕过文档验证,经过身份验证的用户必须具有bypassDocumentValidation操作。内置角色dbAdmin和restore提供此操作。

因此,如果我们使用admin进行操作,肯定会bypass验证。只需添加一个新用户(而不是管理员)并执行操作即可获得预期答案。