MongoDb Json 模式验证草案 4
MongoDb Json Schema Validation Draft 4
我正在使用 Mongodb 的 oneOf 验证器,使用 JSON 模式验证。据我所知,MongoDb 支持架构验证草案 4,我使用的验证规则在 this online validator
中显示为有效
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"additionalProperties": false,
"properties": {
"foo": {},
"bar": {}
},
"oneOf": [
{
"type": "object",
"properties": {
"foo": {}
},
"additionalProperties": false
},
{
"type": "object",
"properties": {
"bar": {}
},
"additionalProperties": false
}
]
}
我传递的输入文档是
{
"bar": {},
}
当我在 Mongo 中使用相同的模式验证并传入具有属性 foo 或属性 bar[= 的对象时,为什么会失败24=]?
{
$jsonSchema: {
bsonType: 'object',
additionalProperties: false,
properties: {
foo: {
bsonType: 'string'
},
bar: {
bsonType: 'string'
}
},
oneOf: [
{
bsonType: 'object',
properties: {
foo: {
bsonType: 'string'
}
},
additionalProperties: false
},
{
bsonType: 'object',
properties: {
bar: {
bsonType: 'string'
}
},
additionalProperties: false
}
]
}
}
db.dmt2.insert({"bar": ""})
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 121,
"errmsg" : "Document failed validation"
}
})
问题已通过指定 _id 并将其包含在 oneOf 的两个可能模式中解决。我认为当 Mongo 添加一个文档时,它插入了它的默认 _id,它不是指定模式的一部分,并且它开始抱怨。
我想复制这个问题来重新确认,但据我所知这是问题所在。
我正在使用 Mongodb 的 oneOf 验证器,使用 JSON 模式验证。据我所知,MongoDb 支持架构验证草案 4,我使用的验证规则在 this online validator
中显示为有效
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"additionalProperties": false,
"properties": {
"foo": {},
"bar": {}
},
"oneOf": [
{
"type": "object",
"properties": {
"foo": {}
},
"additionalProperties": false
},
{
"type": "object",
"properties": {
"bar": {}
},
"additionalProperties": false
}
]
}
我传递的输入文档是
{
"bar": {},
}
当我在 Mongo 中使用相同的模式验证并传入具有属性 foo 或属性 bar[= 的对象时,为什么会失败24=]?
{
$jsonSchema: {
bsonType: 'object',
additionalProperties: false,
properties: {
foo: {
bsonType: 'string'
},
bar: {
bsonType: 'string'
}
},
oneOf: [
{
bsonType: 'object',
properties: {
foo: {
bsonType: 'string'
}
},
additionalProperties: false
},
{
bsonType: 'object',
properties: {
bar: {
bsonType: 'string'
}
},
additionalProperties: false
}
]
}
}
db.dmt2.insert({"bar": ""})
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 121,
"errmsg" : "Document failed validation"
}
})
问题已通过指定 _id 并将其包含在 oneOf 的两个可能模式中解决。我认为当 Mongo 添加一个文档时,它插入了它的默认 _id,它不是指定模式的一部分,并且它开始抱怨。
我想复制这个问题来重新确认,但据我所知这是问题所在。