AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

스키마 유효성 검사

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

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

You can define schema validation rules when creating a collection by using driver methods, or you can add them to an existing collection by using the collMod MongoDB command. This guide only describes how to enable schema validation when creating a collection. To learn more about enabling schema validation on existing collections, see collMod in the Server manual.

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

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

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

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

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

For a full list of JSON schema object fields, see JSON Schema in the Server manual.

CreateCollectionOptions 인스턴스의 스키마 및 관련 옵션을 create_collection() 메서드에 전달하여 스키마 유효성 검사를 구현할 수 있습니다. CreateCollectionOptions::builder() 메서드를 사용하여 CreateCollectionOptions 인스턴스를 빌드할 수 있습니다.

참고

인스턴스화 옵션

Rust 드라이버는 CreateCollectionOptions 을(를) 포함하여 다양한 유형을 생성하기 위해 빌더(Builder) 디자인 패턴을 구현합니다. 각 유형의 builder() 메서드를 사용하여 옵션 빌더 함수를 한 번에 하나씩 연결하여 옵션 인스턴스를 구성할 수 있습니다.

다음 CreateCollectionOptions::builder() 함수를 호출하여 새 컬렉션에 대한 유효성 검사 옵션을 지정합니다.

메서드
설명

validator()

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

For more information, see the JSON Schema Validation section on this page.

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" ],
}
}
}
};
let validation_opts = CreateCollectionOptions::builder()
.validator(validator)
.validation_action(Some(ValidationAction::Error))
.validation_level(Some(ValidationLevel::Moderate))
.build();
db.create_collection("survey_answers", validation_opts).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"
}

팁

스키마 유효성 검사 우회

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

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

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

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

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