@plx49638

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

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

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

Но не могу найти как проверить значение перед записью что бы оно соответствовало определенному типу средствами mongoDB. Подскажите есть ли там такая возможность ?
  • Вопрос задан
  • 47 просмотров
Решения вопроса 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" операции, которые нарушают правила валидации, будут отклоняты.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы