2016-01-19 26 views
0

基本上我是mongoDb和从文档学习的新手。我想在MongoDb中定义集合时使用验证器,validationLevel,validationAction。所以如果验证数据没有被插入或更新,我可能会出错。我遵循this文件以供参考。然而,我在定义集合方面取得了成功,但是当我添加错误记录时,它不会像文档中提到的那样给出错误。每当新记录被插入时。你们可以帮我解决这个问题吗?在Mongo中定义的集合中使用验证器

我使用下面的命令来创建收集

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

我猜你验证规则并不适用于集合。您可以使用 getCollectionInfos({name:'constacts'}) 检查相同,这里是link

+0

是的,它没有被应用,但是当我们运行命令申请验证它给人的成功。那么可能是什么原因? –

0

错误发生在validationActionvalidationLevel

使用本

db.createCollection("contacts", { validator: 
    { $and: 
     [ 
      { phone: { $type: "string" } }, 
      { email: { $regex: /@mongodb\.com$/ } }, 
      { status: { $in: [ "Unknown", "Incomplete" ] } } 
     ] 
    }, 
    validationLevel : "strict", 
    validationAction : "error" 
    } 
) 

insted的

db.createCollection("contacts", 
{ 
    validator: { $and: 
    [ 
     { phone: { $type: "string" } }, 
     { email: { $regex: /@mongodb\.com$/ } }, 
     { status: { $in: [ "Unknown", "Incomplete" ] } } 
    ], 
    validationAction: "error", 
    validationLevel: "strict" 
    } 
} 
) 
相关问题