MongoDB — это база данных NoSQL, которая обеспечивает гибкость в структурировании данных. Однако наступает момент, когда вам необходимо обеспечить определенный уровень проверки целостности данных. MongoDB обеспечивает это через уровни и действия проверки схемы. В этой статье мы подробно рассмотрим, какие документы подлежат проверке, что произойдет, если проверка не пройдена, а также разницу между строгим и умеренным уровнями проверки.
Основы проверки схемы
Прежде чем углубиться в подробности, давайте быстро посмотрим, как определить правило проверки схемы. Предположим, у вас есть коллекция с именем students
, и вы хотите, чтобы в каждом документе было поле name
типа string
:
db.createCollection("students", { validator: { $jsonSchema: { bsonType: "object", required: ["name"], properties: { name: { bsonType: "string", description: "Name must be a string" } } } } });
Какие документы проходят проверку?
Строгая проверка
При строгой проверке все входящие записи (insert
, update
, replace
) должны пройти проверку схемы.
Умеренная проверка
Умеренная проверка применяется только к документам, которые уже соответствуют правилам проверки. Новые или обновленные документы, не соответствующие критериям, все равно будут отклонены.
Что произойдет, если проверка не пройдена?
Если проверка не удалась, MongoDB отклонит операцию и вернет ошибку. База данных не будет обновлять или вставлять документ, пока он не пройдет правила проверки.
Строгая и умеренная проверка
Основное различие между строгой и умеренной проверкой заключается в том, как они обращаются с существующими документами, которые не соответствуют правилам проверки.
Строгая проверка
- Применяется ко всем вставкам и обновлениям.
- Существующие документы, не соответствующие критериям, не могут быть обновлены, если сначала они не исправлены.
Умеренная проверка
- Применяется только к документам, которые уже соответствуют критериям проверки.
- Существующие документы, не соответствующие критериям, все равно можно обновлять, если обновление не нарушает схему.
Чтобы установить или изменить уровень проверки и действие, вы можете использовать команду collMod
:
db.runCommand({ collMod: "students", validator: { /* new validator */ }, validationLevel: "moderate" });
Краткое содержание
Проверка схемы MongoDB — это мощная функция, помогающая поддерживать целостность данных. Два основных уровня проверки, strict
и moderate
, предлагают разные уровни жесткости в соответствии с потребностями вашего приложения. Всегда помните о конкретных требованиях вашего приложения при выборе уровня проверки.