Условная запись и её результат в MongoDB
mongodb117-atomic-validation
Это строки реального запуска на синтетических документах. Своя коллекция после проверки удалена.
Наблюдения этого запуска
Ниже сохранены ответы записи, причины отказов и итоговые документы. Текст и подробности серверных ошибок могут различаться между версиями. Случайные имена учебных объектов заменены подписями.
Входные документы: число и строка различаются
[
{
"_id": 101,
"sku": "CUP",
"title": "Кружка",
"stock": 4
},
{
"_id": 102,
"sku": "LAMP",
"title": "Лампа",
"stock": "4"
},
{
"_id": 103,
"sku": "PLATE",
"title": "Тарелка",
"stock": 1,
"discount": 10
}
]Серверные причины двух отказов
[
{
"position": 1,
"sku": "LAMP",
"code": 121,
"message": "Document failed validation",
"info": {
"failingDocumentId": 102,
"details": {
"operatorName": "$jsonSchema",
"schemaRulesNotSatisfied": [
{
"operatorName": "properties",
"propertiesNotSatisfied": [
{
"propertyName": "stock",
"details": [
{
"operatorName": "bsonType",
"specifiedAs": {
"bsonType": [
"int",
"long"
]
},
"reason": "type did not match",
"consideredValue": "4",
"consideredType": "string"
}
]
}
]
}
]
}
}
},
{
"position": 2,
"sku": "PLATE",
"code": 121,
"message": "Document failed validation",
"info": {
"failingDocumentId": 103,
"details": {
"operatorName": "$jsonSchema",
"schemaRulesNotSatisfied": [
{
"operatorName": "additionalProperties",
"specifiedAs": {
"additionalProperties": false
},
"additionalProperties": [
"discount"
]
}
]
}
}
}
]Сохранённый документ
[
{
"_id": 101,
"sku": "CUP",
"title": "Кружка",
"stock": 4
}
]PHP 8.5.11; mongodb 2.5.5; MongoDB 8.0.34.