MongoDB jsonSchema验证additionalProperties

时间:2018-01-28 21:33:27

标签: mongodb

使用验证器创建集合

db.createCollection("claims", 
    { validator : { $jsonSchema : { bsonType : "object", 
                 properties : { airportCode : { bsonType: "string"} }, 
                 additionalProperties: false} 
                  } } )

插入 db.claims.insert({"airportCode" : "DSM"}) =>结果:“errmsg”:“文档验证失败”

如果我通过创建集合删除“additionalProperties: false”,那么我可以插入文档。

任何建议,如何保留“additionalProperties: false”,因为我想控制文件。

1 个答案:

答案 0 :(得分:7)

与MongoDB 3.6.2一样,JSON Schema验证不会自动添加默认的_id属性,因此在使用additionalProperties: false时需要包含此规则。

例如,假设默认的ObjectID:

db.createCollection("claims",
    { validator : {
        $jsonSchema : {
            bsonType : "object",
            properties : {
                _id: { bsonType: "objectId" },
                airportCode : { bsonType: "string"}
            },
            additionalProperties: false
        }
     }}
)

在MongoDB Jira问题跟踪器上进行upvote / watch的两个相关问题: