我在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 })
由于我没有插入有效状态,因此应该有一些错误。 但我没有收到任何错误。
答案 0 :(得分:0)
我今天遇到了同样的问题。
事实上,该文件刚刚指出了下面可能存在的问题:
您无法在admin,local和config数据库中为集合指定验证程序。 您无法为system。* collections指定验证器。
...对于已启用访问控制的部署,要绕过文档验证,经过身份验证的用户必须具有bypassDocumentValidation操作。内置角色dbAdmin和restore提供此操作。
因此,如果我们使用admin
进行操作,肯定会bypass
验证。只需添加一个新用户(而不是管理员)并执行操作即可获得预期答案。