在Mongo

时间:2016-01-19 11:58:56

标签: mongodb validation data-modeling

基本上,我是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 })

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

错误位于validationActionvalidationLevel

使用此

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/