基本上,我是MongoDB的新手并从文档中学习。我想在MongoDB中定义集合时使用validator,validationLevel,validationAction。因此,如果未插入或更新经过验证的数据,我可能会收到错误。我已关注this文档以供参考。但是,我在定义集合方面取得了成功,但是当我添加错误的记录时,它并没有像我在文档中提到的那样给出错误。每次插入新记录时。你能帮助我解决我的代码错误吗。
我使用以下命令创建集合
db.createCollection( "contacts",
{
validator: { $and:
[
{ phone: { $type: "string" } },
{ email: { $regex: /@mongodb\.com$/ } },
{ status: { $in: [ "Unknown", "Incomplete" ] } }
],
validationAction: "error"
}
}
)
我也使用了与validationLevel相同的命令来严格如下,但它也没有成功。
db.createCollection( "contacts",
{
validator: { $and:
[
{ phone: { $type: "string" } },
{ email: { $regex: /@mongodb\.com$/ } },
{ status: { $in: [ "Unknown", "Incomplete" ] } }
],
validationAction: "error",
validationLevel: "strict"
}
}
)
我用来插入记录的命令如下
db.contacts.insert( { name: "Amanda", status: "Updated" } )
以下是根据文件的预期输出。
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 121,
"errmsg" : "Document failed validation"
}
})
但我最终得到的成功输出如下
WriteResult({ "nInserted" : 1 })
答案 0 :(得分:1)
我猜你的验证规则不适用于该集合。您可以检查相同的使用情况
getCollectionInfos({name:'constacts'})
这是link。
答案 1 :(得分:0)
错误位于validationAction
和validationLevel
。
使用此
db.createCollection( "contacts", { validator:
{ $and:
[
{ phone: { $type: "string" } },
{ email: { $regex: /@mongodb\.com$/ } },
{ status: { $in: [ "Unknown", "Incomplete" ] } }
]
},
validationLevel : "strict",
validationAction : "error"
}
)
insted of
db.createCollection( "contacts",
{
validator: { $and:
[
{ phone: { $type: "string" } },
{ email: { $regex: /@mongodb\.com$/ } },
{ status: { $in: [ "Unknown", "Incomplete" ] } }
],
validationAction: "error",
validationLevel: "strict"
}
}
)
答案 2 :(得分:0)
来自文档:
您无法在admin,local中为集合指定验证器, 和配置数据库。您无法为系统指定验证器。* 集合。
https://docs.mongodb.com/v3.2/reference/method/db.createCollection/