Обеспечение целостности данных с помощью проверки схемы
Хотя MongoDB известна своей гибкой схемой, вы можете обеспечить определенную структуру для ваших документов с помощью проверки схемы (schema validation). Это гарантирует, что все документы в коллекции соответствуют определенному набору правил, улучшая качество и согласованность данных.
На этом заключительном шаге вы добавите валидатор к коллекции books. Этот валидатор потребует, чтобы каждый документ имел поля title, author и year, а также будет обеспечивать соблюдение определенных типов данных и диапазонов для этих полей.
Используйте команду collMod (изменить коллекцию) для добавления валидатора.
db.runCommand({
collMod: "books",
validator: {
$jsonSchema: {
bsonType: "object",
required: ["title", "author", "year"],
properties: {
title: {
bsonType: "string",
description: "must be a string and is required"
},
author: {
bsonType: "string",
description: "must be a string and is required"
},
year: {
bsonType: "int",
minimum: 1000,
maximum: 2024,
description: "must be an integer between 1000 and 2024"
}
}
}
}
});
Вывод { ok: 1 } подтверждает, что валидатор был успешно применен.
Теперь протестируем валидатор, попытавшись вставить документ, нарушающий правила. Этот документ имеет значение year, выходящее за пределы допустимого диапазона.
db.books.insertOne({
title: "The Hobbit",
author: "J.R.R. Tolkien",
year: 999
});
Вставка завершится неудачей, и MongoDB вернет сообщение об ошибке, объясняющее, что документ не прошел проверку.
MongoBulkWriteException: Document failed validation
Это подтверждает, что ваше правило проверки схемы активно и эффективно защищает целостность ваших данных. Эта мощная функция сочетает гибкость NoSQL базы данных с надежностью проверки данных.