Ответы пользователя по тегу MongoDB
  • Как проверить данные перед записью в mongoDB?

    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" операции, которые нарушают правила валидации, будут отклоняты.
    Ответ написан
    Комментировать