Задать вопрос
@plx49638

Как проверить данные перед записью в mongoDB?

В документации mongoDB сказано что есть поддержка определенных параметров

https://www.mongodb.com/docs/v2.2/reference/glossa...

Но не могу найти как проверить значение перед записью что бы оно соответствовало определенному типу средствами mongoDB. Подскажите есть ли там такая возможность ?
  • Вопрос задан
  • 77 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
black1277
@black1277
Вольный стрелок
MongoDB предлагает возможность валидировать данные перед их записью в базу данных с помощью так называемой схемной валидации (schema validation). Валидация схемы позволяет вам создавать правила для ваших полей, такие как разрешенные типы данных и диапазон значений.
Чтобы использовать схемную валидацию, вы можете использовать параметр validator при создании новой коллекции или при изменении существующей. Пример использования выглядит следующим образом:
db.createCollection("myCollection", {
   validator: {
      $jsonSchema: {
         bsonType: "object",
         required: ["name", "age"],
         properties: {
            name: {
               bsonType: "string",
               description: "must be a string and is required"
            },
            age: {
               bsonType: "int",
               minimum: 0,
               description: "must be an integer greater than 0 and is required"
            }
         }
      }
   }
});

В этом примере при попытке добавления в коллекцию документа, поля name и age проверяются на соответствие указанным типам и условиям. Если документ не соответствует заданным критериям, MongoDB не допустит запись и вернет ошибку.
Чтобы применить валидационные правила к существующей коллекции, можно использовать команду collMod с параметром validationAction:
db.runCommand({
   collMod: "myCollection",
   validator: {
      // ... детали валидационного json схемы ...
   },
   validationLevel: "moderate",
   validationAction: "error"
});

validationLevel может быть "off", "moderate" или "strict". При уровне "moderate" правила применяются только к новым документам и документам, которые уже соответствуют правилам. Уровень "strict" применит правила ко всем операциям вставки и изменения.
validationAction может быть "warn" или "error". При выборе "warn" невалидные документы всё равно будут добавлены в коллекцию, но в журнале будет предупреждение. При выборе "error" операции, которые нарушают правила валидации, будут отклоняты.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы