MongoDB имеет гибкую схему, которая позволяет хранить документы различных структур в одной коллекции. Однако, если вам необходимо ограничить структуру документа и установить определенные правила для полей, вам нужно использовать валидацию.
При использовании валидации в MongoDB, можно определить схему для коллекции с помощью JSON-схемы, которая описывает ожидаемую структуру документа. Это позволяет в MongoDB добавить некоторые ограничения на поля и типы значений.
Однако, по умолчанию в MongoDB валидация не включена. Если вы включите валидацию и определите схему для коллекции, но не указали конкретное правило для проверки поля, то MongoDB будет пропускать поля, которых нет в схеме. Это происходит потому, что по умолчанию, MongoDB не выполняет строгую проверку на ограничения схемы.
Если вам необходимо строго проверять структуру документа, включите строгую проверку в опциях валидации. Например, вы можете использовать опцию "strict" со значением "true" в опции "validationAction" при создании схемы для коллекции:
db.createCollection("myCollection", { validator: { $jsonSchema: { strict: true, // Другие правила валидации } } })
При использовании строгой проверки, MongoDB будет ругаться на документы, которые содержат поля, не указанные в схеме. Вы можете выбрать, как MongoDB будет реагировать на такие документы, установив соответствующее значение в опции "validationAction". Например, вы можете выбрать действие "error", чтобы MongoDB выбрасывала ошибку при вставке или обновлении документа с неправильной структурой:
db.createCollection("myCollection", { validator: { $jsonSchema: { strict: true, validationAction: "error", // Другие правила валидации } } })
В итоге, чтобы валидация не пропускала поля, которых нет в схеме, включите строгую проверку и установите соответствующее действие в опциях валидации при создании коллекции.