Я использую валидатор Mongodb oneOf с проверкой схемы JSON. Насколько мне известно, MongoDb поддерживает черновик 4 проверки схемы, и правила проверки, которые я использую, отображаются как действительные в этом онлайн-валидаторе
{
"$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?
{
$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"
}
})