mongodb - 如何验证mongodb嵌入文档

标签 mongodb validation embedded-documents

MongoDB 3.2 有这个不错的 validation feature .但是,在此文档中,它仅向我展示了如何对第一级字段进行验证。如果我要插入以下嵌入文档,我该如何设置验证规则?

{"name": {
          "first_name": "xx",
          "last_name": "yy"
         }
}

我已经尝试了以下但它不起作用,

db.createCollection( "name_collection",
    { validator: { $and:
        [
            {name.first_name: {$type: "string"}},
            {name.last_name: {$type: "string"}}
        ]
    }
)

提前致谢。

最佳答案

下面是测试代码,效果不错

> db.createCollection('name', {validator: {$and: [{"name.first_name": {$type: 'string'}}, {"name.last_name": {$type: 'string'}}]}})
{ "ok" : 1 }

看来你应该将 "" 添加到 name.last_name,

用有效数据测试

> db.name.insert({name: {first_name: 'xx', last_name: 'yy'}})
WriteResult({ "nInserted" : 1 })

用无效数据测试

> db.name.insert({name: {first_name: 'xx', last_name: 3}})
WriteResult({
        "nInserted" : 0,
        "writeError" : {
                "code" : 121,
                "errmsg" : "Document failed validation"
        }
})

> db.name.find()
{ "_id" : ObjectId("56e8b644f33ed6e7f3c57f90"), "name" : { "first_name" : "xx",
"last_name" : "yy" } }

关于mongodb - 如何验证mongodb嵌入文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36024964/

相关文章:

mongodb - 查询以返回展平的嵌入字段

java - 如何从 mongodb 检索长响应?

java - 复杂对象的验证

javascript - 验证不以特殊字符开头或结尾的文本框

mongodb - 查询mongodb中嵌入文档的数组

python - mongoengine.fields.配置不当 : PIL library was not found

mongodb - 连接后 mongobee 在 Atlas 集群上读取 DBname.system.indexes 失败

javascript - 验证并显示在文本字段中输入的信息

python - 在 mongoengine EmbeddedDocumentListField 中分组

python - 如何在 mongoengine 中仅包含选定的嵌入文档?