{test:"123"}
falha na validação porque não está em conformidade com nenhum dos esquemas em anyOf
, que precisam de test1
ou test2
como a única chave. anyOf
aplica cada subesquema à sua instância e declara válido se pelo menos um dos subesquemas passar na validação. {test1: "123" }
falha porque os esquemas raiz additionalProperties: false
impede quaisquer chaves em seu objeto não definidas no MESMO objeto de esquema properties
ou patternProperties
. A solução é ter alguma duplicação.
In THIS exemplo (o link é para o teste do navegador, mas apenas draft-7), adicionei propriedades raiz
test1
e test2
. Isso permitirá dados onde você tem uma chave de test1
ou test2
para passar, mas como não conheço seus requisitos, não posso dizer como modificar o esquema para permitir um objeto com uma chave de test
passar (como cada um dos anyOf
subesquemas o impedem). {
"type": "object",
"additionalProperties": false,
"properties": {
"_id": {},
"test": {},
"test1": {},
"test2": {}
},
"anyOf": [
{
"type": "object",
"properties": {
"test1": {}
},
"additionalProperties": false
},
{
"type": "object",
"properties": {
"test2": {}
},
"additionalProperties": false
}
]
}
Se sua intenção é verificar se uma das coisas que você está inserindo tem
test1
ou test2
, temo que o JSON Schema não possa ajudá-lo. O esquema JSON no contexto do Mongo só pode verificar cada item individualmente e não tem a capacidade de validar uma coleção de registros potencialmente inseridos. No esquema de exemplo acima, removi a verificação de tipo porque isso não é relevante para esta pergunta, e bsonType difere do tipo de esquema JSON de qualquer maneira.