Условная запись и её результат в MongoDB

mongodb117-atomic-validation

Это строки реального запуска на синтетических документах. Своя коллекция после проверки удалена.

Позиция операцииSKUРезультатКод ошибки
0CUPсохраненоNULL
1LAMPотклонено121
2PLATEотклонено121

Наблюдения этого запуска

Ниже сохранены ответы записи, причины отказов и итоговые документы. Текст и подробности серверных ошибок могут различаться между версиями. Случайные имена учебных объектов заменены подписями.

Входные документы: число и строка различаются
[
    {
        "_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.