【发布时间】:2018-04-17 07:28:27
【问题描述】:
下面是定义的 json 模式。我已经测试过anyOf、oneOf、allOf。除了 oneOf 之外,模式在所有情况下都可以正常工作。理想情况下,它应该只在 oneOf 中工作。它不工作。
{
"bsonType": "object",
"additionalProperties": true,
"properties": {
"_id": {},
"enhanced_file_url": {
"bsonType": "string"
},
"child_docs": {
"type": [
"array"
],
"items": {
"bsonType": "object",
"additionalProperties": true,
"properties": {
"_id": {},
"standardized_data": {
"oneOf": [
{
"bsonType": "object",
"properties": {
"shipper__address_line_1": {
"bsonType": "string"
}
}
},
{
"bsonType": "object",
"properties": {
"shipper__address_line_2": {
"bsonType": "double"
}
}
}
]
},
"standardized_field_prediction": {
"bsonType": "object",
"additionalProperties": true
}
}
}
}
}
}
下面是json数据的输入格式。
{
"enhanced_file_url" : "http://localhost:9000/documents/5ab51e99534b44180e0bdb0c/document_download",
"child_docs" : [
{
"standardized_data" : {
"shipper__address_line_1": "A28 pariseema Complex"
}
},
{
"standardized_data" : {
"shipper__address_line_2": "A1-63 Orchid Greenfield"
}
}
]}
当我们在上面运行时,它会报错
【问题讨论】:
-
我不知道您的模式是否特定于 mongo,但对于 JSON,您需要一个小的
t用于true作为一个裸词。由于将True更改为true,然后我根据jsonschemavalidator.net 获得了有效架构,然后实例通过。 -
错误信息是什么?
-
@Relequestual 因为我们碰巧在 Python 脚本中指定了模式,所以我们应该使用带有大写 T 的“True”
-
谢谢。只是想我会检查。您能否更新您的问题以包含您看到的错误消息?
-
@Relequestual 它没有显示任何错误。当我们使用“allOf”/“anyOf”时,数据被插入(正确验证),而文档在“oneOf”上验证失败
标签: json mongodb pymongo jsonschema json-schema-validator