如何更正Mongodb中的文档验证失败?

大卫·凌

我创建了以下集合(创建成功)

db.createCollection("Company", { "validator": { "$jsonSchema": {
    "bsonType":"object",
    "required":["city_name","city","street_name","building_number","budget","Department"],
    "properties":{ "city_name":{ "bsonType":"string",
                            "description":"name of city" },
                   "city":{ "bsonType":"string",
                            "description":"City" },
                   "street_name":{ "bsonType":"string",
                                          "description" :"name of street" },
                   "building_number":{"bsonType":"int",
                                "description":"number of building", minimum: 0, maximum: 500},
                   "budget":{"bsonType":"double",
                                           "description":"budget of company",minimum: 0 },

                   "Department":{ "bsonType":"object",
                               "required":["Department_name","floor_number","Employee"],
                               "properties":{ "Department_name":{"bsonType":"string",
                                                        "description": "name of department" },
                                              "floor_number":{"bsonType":"int",
                                                      "description":"number of floor" },
                                             }},

                    "Employee":{ "bsonType":"object",
                                          "required":["first_name","last_name","DOB","Salary"],
                                          "properties":{"first_name":{"bsonType":"string",
                                                                "description":"Employees first name"},
                                                        "last_name":{"bsonType":"string",
                                                                 "description":"Employees last name"},
                                                        "DOB":{"bsonType":"date",
                                                                   "description":"Date of birth of empployee"},
                                                        "Salary":{"bsonType":"double",
                                                                   "description":"Salary of Employee",minimum: 0},
                                                        "Position":{"bsonType":"string",
                                                                   "description":"Position of employee. Field is not required"}}}}}}});

我创建了一组数据插入到这个集合中来测试验证


db.Company.insert(
    { "city_name":"Sydney",
       "city":"Sydney",
       "street_name":"Pitt Street",
       "building_number":100,
       "budget": 100000.0,
       "Department":{"department_name":"Google",
                  "floor_number":4,
        "Employee" :{"first_name" : "George",
                     "last_name": "Martin",
                     "DOB": new Date('Dec 26,1981'),  
                     "Salary" : "70000",
                      "Position": "CEO"}}

     });

但是,当我运行此脚本时,出现错误

WriteResult({
    "nInserted" : 0,
    "writeError" : {
        "code" : 121,
        "errmsg" : "Document failed validation"
    }
})

可悲的是,Mongodb 在导致此类错误的原因方面并不是很具体,而且我已经检查了我的语法和声明,但我自己却无法发现任何错误,但显然存在!

为什么我在运行我的代码时收到这个错误?谢谢

春夫

试试这个:

01)架构:

db.createCollection(
    "Company", 
    {
        "validator": { 
            "$jsonSchema": {
                "bsonType":"object",
                "required":["city_name","city","street_name","building_number","budget","Department"],
                "properties": { 
                    "city_name":{ "bsonType" : "string", "description" : "name of city" },
                    "city":{ "bsonType" : "string", "description" : "City" },
                    "street_name":{ "bsonType" : "string","description" : "name of street" },
                    "building_number": { "bsonType" : "int", "description" : "number of building", minimum: 0, maximum: 500},
                    "budget": { "bsonType" : "double", "description" : "budget of company",minimum: 0 },
                    "Department": { 
                        "bsonType":"object",
                        "required":["Department_name","floor_number","Employee"],
                        "properties": { 
                            "Department_name":{"bsonType":"string", "description": "name of department" },
                            "floor_number":{"bsonType":"int", "description":"number of floor" },
                            "Employee":{ 
                                "bsonType":"object",
                                "required":["first_name","last_name","DOB","Salary"],
                                "properties":{
                                    "first_name":{"bsonType":"string", "description":"Employees first name"},
                                    "last_name":{"bsonType":"string", "description":"Employees last name"},
                                    "DOB":{"bsonType":"date", "description":"Date of birth of empployee"},
                                    "Salary":{"bsonType":"double", "description":"Salary of Employee",minimum: 0},
                                    "Position":{"bsonType":"string", "description":"Position of employee. Field is not required"}
                                }
                            }
                        }
                    },
                }
            }
        }
    }
);

02)插入:

db.Company.insert(
{  
    "city_name": "Sydney",
    "city": "Sydney",
    "street_name": "Pitt Street",
    "building_number": NumberInt(100),
    "budget": 100000.0,
    "Department":{
        "Department_name":"Google",
        "floor_number": NumberInt(4),
        "Employee" : {
            "first_name" : "George",
            "last_name": "Martin",
            "DOB": new Date('Dec 26,1981'),  
            "Salary" : 70000.0,
            "Position": "CEO"
        }
    },    
});

我必须做一些改变:

  • 在插入命令中,'int' 字段必须是 NumberInt(number)。
  • 该方案已更改,以便“雇员”在“部门”内。
  • 工资必须翻倍。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章