Docs Menu
Docs Home
/ / /
Rust 드라이버
/

스키마 유효성 검사

이 페이지의 내용

  • 개요
  • JSON Schema 유효성 검사
  • 스키마 유효성 검사 구현
  • 예시
  • 추가 정보
  • API 문서

이 가이드에서는 Rust 드라이버를 사용하여 MongoDB 컬렉션에 대한 스키마 유효성 검사 를 구현하는 방법을 배울 수 있습니다.

스키마 유효성 검사를 구현하려면 유효성 검사 규칙 세트로 구성된 JSON schema를 제공해야 합니다. 스키마 유효성 검사를 구현하는 경우 서버는 유효성 검사 규칙을 따르는 쓰기 작업만 실행할 수 있습니다. 스키마 유효성 검사를 사용하여 지정된 컬렉션에 있는 문서 필드의 데이터 유형 및 값 범위를 제한합니다.

컬렉션을 생성할 때 드라이버 메서드를 사용하여 스키마 유효성 검사 규칙을 정의하거나 collMod MongoDB 명령을 사용하여 기존 컬렉션에 추가할 수 있습니다. 이 가이드에서는 컬렉션을 생성할 때 스키마 유효성 검사를 활성화하는 방법에 대해서만 설명합니다. 기존 컬렉션에서 스키마 유효성 검사를 활성화하는 방법에 대해 자세히 알아보려면 MongoDB Server 매뉴얼에서 collMod 를 참조하세요.

스키마 유효성 검사 규칙을 사용하여 컬렉션을 만들기 전에 JSON schema를 정의해야 합니다.

JSON schema는 컬렉션에 대한 유효성 검사 규칙을 지정하는 키-값 쌍을 포함하는 JSON 객체입니다. 최상위 수준에서 이 객체에는 $jsonSchema 객체가 포함되어야 합니다. $jsonSchema 객체에는 다음 필드가 포함되어 있습니다.

  • title: 스키마에 대한 선택적 설명을 설정합니다.

  • 필수: 컬렉션의 각 문서에 대한 필수 필드 목록을 지정합니다.

  • 속성: 개별 필드에 대한 속성 요구 사항을 설정합니다.

JSON schema 객체 필드의 전체 목록은 MongoDB Server 매뉴얼의 JSON schema 를 참조하세요.

스키마 및 관련 옵션을 CreateCollectionOptions 옵션 빌더 메서드에 전달하여 스키마 유효성 검사 를 구현 수 있습니다.

참고

설정 옵션

옵션 빌더 메서드를 create_collection() 메서드 호출에 직접 연결하여 CreateCollectionOptions 필드를 설정하다 수 있습니다. 이전 버전의 운전자 를 사용하는 경우 옵션 빌더 메서드를 builder() 메서드에 연결하여 CreateCollectionOptions 인스턴스 를 구성해야 합니다.

다음 CreateCollectionOptions 메서드를 호출하여 새 컬렉션 에 대한 유효성 검사 옵션을 지정합니다.

메서드
설명
validator()

JSON schema를 전달하여 컬렉션에 대한 유효성 검사 규칙을 지정합니다.

자세한 내용은 이 페이지의 JSON Schema 유효성 검사 섹션을 참조하세요.

validation_level()

유효성 검사 규칙이 적용되는 삽입 및 업데이트 작업을 지정합니다.

가능한 값은 ValidationLevel::Off, ValidationLevel::Strict, ValidationLevel::Moderate 입니다.

validation_action()

유효성 검사 규칙을 따르지 않는 문서를 삽입하는 경우 드라이버에서 오류 또는 경고를 표시할지 여부를 지정합니다.

가능한 값: ValidationAction::Error, ValidationAction::Warn.

이 예에서는 다음 유효성 검사 사양을 사용하여 survey_answers 라는 컬렉션을 만듭니다.

  • validator() 메서드는 각 문서의 answer 필드에 "yes" 또는 "no" 값이 있어야 한다고 지정하는 JSON schema를 수신합니다.

  • validation_action() 메서드는 쓰기 작업이 유효성 검사 규칙을 위반할 때 드라이버가 Error 를 발생시킬지 여부를 지정합니다.

  • validation_level() 메서드는 유효성 검사가 Moderate 임을 지정하므로 유효성 검사 규칙은 기존의 유효한 문서에 대한 삽입 및 업데이트에만 적용됩니다.

let validator =
doc! {
"$jsonSchema": doc! {
"bsonType": "object",
"title": "Answer Value Validation",
"properties": doc! {
"answer": doc! {
"enum": vec! [ "yes", "no" ],
}
}
}
};
db.create_collection("survey_answers")
.validator(validator)
.validation_action(ValidationAction::Error)
.validation_level(ValidationLevel::Moderate)
.await?;

다음 문서는 유효성 검사 규칙을 따르며 성공적으로 삽입될 수 있습니다.

{
"_id": { ... },
"question": "Do you like to exercise?",
"answer": "yes"
},
{
"_id": { ... },
"question": "Do you like to play computer games?",
"answer": "no"
}

그러나 다음 문서를 삽입하려고 하면 answer 값이 유효한 옵션과 일치하지 않기 때문에 서버에서 오류가 발생합니다.

{
"_id": { ... },
"question": "Do you like to exercise?",
"answer": "depends on my mood"
}
Error: Error { kind: Write(WriteError(WriteError { code: 121, code_name:
None, message: "Document failed validation", details:
Some(Document({"failingDocumentId":
ObjectId("..."), "details":
Document({"operatorName": String("$jsonSchema"), "title": String("Answer
Value Validation"), ... })})) })), ... }

스키마 유효성 검사 우회

컬렉션의 유효성 검사 규칙을 우회하려면 쓰기 메서드의 옵션 매개변수에서 bypass_document_validation 필드를 true 로 설정합니다. 이렇게 하면 컬렉션에 대한 모든 유효성 검사 규칙과 validation_level 에서 정의한 해당 규칙의 예외가 무시됩니다.

insert_one() 메서드의 옵션에서 이 설정을 지정하는 방법의 예시 를 보려면 문서 삽입 가이드 의 insert_one 동작 수정 섹션을 참조하세요.

이 페이지에 언급된 MongoDB Server 작업에 대해 자세히 알아보려면 MongoDB Server 매뉴얼에서 다음 문서를 참조하세요.

유효성 검사 수준 및 작업 설정에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.

이 가이드에 언급된 다른 메서드 또는 유형에 대해 자세히 알아보려면 다음 문서를 참조하세요.

돌아가기

데이터베이스 및 컬렉션