유효성 검사 추가하기 전에 컬렉션 에 이미 존재하는 문서의 경우 MongoDB 이러한 문서에 유효성 검사 규칙을 적용하는 방법을 지정할 수 있습니다.
Context
스키마의 validationLevel에 따라 MongoDB가 유효성 검사 규칙을 적용하는 문서가 결정됩니다.
유효성 검사 수준 | 행동 |
|---|---|
| MongoDB 는 유효성 검사 검사 규칙과 일치하는 기존의 유효한 문서에 대한 문서 삽입 및 업데이트에 동일한 유효성 검사 규칙을 적용합니다. 유효성 검사 규칙과 일치하지 않는 컬렉션 의 기존 문서에 대한 업데이트는 유효성 검사 검사를 통과할 필요가 없습니다. |
| (기본값) MongoDB 는 모든 문서 삽입 및 업데이트에 동일한 유효성 검사 규칙을 적용합니다. |
| MongoDB 모든 문서 삽입 및 업데이트에 유효성 검사 규칙을 적용하고 컬렉션 의 모든 문서 규칙을 충족하도록 보장 .
버전 9.0에 추가 되었습니다. |
전제 조건
이 페이지의 예시에서는 movies 컬렉션 사용합니다. 컬렉션 만들고 예제에 사용되는 문서를 삽입하려면 다음 명령을 실행 .
db.movies.insertMany( [ { title: "The Godfather", year: 1972 }, { title: "Casablanca", year: 1942 } ] )
중간 유효성 검사 지정
다음 예시 movies 컬렉션 에 moderate 유효성 검사기를 추가하고 유효성 검사 규칙을 충족하는 문서 삽입합니다.
유효성 유효성 검사 moderate 유효성 검사 규칙을 지정합니다.
moderate validationLevel을 사용하여 movies 컬렉션에 유효성 검사기를 추가합니다.
db.runCommand( { collMod: "movies", validator: { $jsonSchema: { bsonType: "object", required: [ "title" ], properties: { title: { bsonType: "string", description: "title must be a string and is required" } } } }, validationLevel: "moderate" } )
validationLevel가 moderate이므로 MongoDB 모든 문서 삽입 및 이미 규칙을 충족하는 기존 문서의 업데이트에 유효성 검사 규칙을 적용합니다.
엄격한 유효성 검사 지정
다음 예시 movies 컬렉션 에 strict 유효성 검사기를 추가하고 유효성 검사 규칙을 충족하는 문서 삽입합니다.
유효성 유효성 검사 strict 유효성 검사 규칙을 지정합니다.
strict validationLevel을 사용하여 movies 컬렉션에 유효성 검사기를 추가합니다.
db.runCommand( { collMod: "movies", validator: { $jsonSchema: { bsonType: "object", required: [ "title" ], properties: { title: { bsonType: "string", description: "title must be a string and is required" } } } }, validationLevel: "strict" } )
validationLevel가 strict이므로 MongoDB 모든 문서 삽입 및 업데이트에 유효성 검사 규칙을 적용합니다.
참고
strict 유효성 검사 로 업그레이드 MongoDB 컬렉션 의 기존 문서가 유효성 검사기를 통과하는지 소급하여 확인하지 않습니다. 업그레이드 후 컬렉션 에 업그레이드 전에 존재했던 유효하지 않은 문서가 포함될 수 있습니다. 그러나 유효하지 않은 문서에 대한 업데이트 작업은 유효성 검사기로 인해 실패합니다. 유효하지 않은 문서 업데이트 하려면 먼저 유효성 검사기에 실패한 문제를 해결합니다.
제약 조건 유효성 검사 지정
다음 예시 movies 컬렉션 을 constraint 유효성 검사 수준으로 업그레이드합니다. constraint 레벨로 업그레이드 하면 MongoDB 컬렉션 에 이미 있는 모든 문서 유효성 검사기를 충족하는지 확인합니다.
참고
다음 절차는 이미 존재하는 컬렉션 에 적용됩니다. 컬렉션 생성할 때 validationLevel를 constraint로 설정하다 경우, 먼저 수준을 strict로 설정하다 하거나 컬렉션 준비할 필요가 없습니다.
(조건부) validationLevel를 strict로 설정합니다.
컬렉션의 validationLevel가 아직 strict이 아닌 경우, 절차에 따라 엄격한 유효성 검사 지정하세요.
constraint 수준에 맞는 컬렉션 준비합니다.
prepareConstraintValidationLevel를 true로 설정하다 collMod를 실행합니다.
db.runCommand( { collMod: "movies", prepareConstraintValidationLevel: true } )
이 명령은 bypassDocumentValidation를 차단하고 유효성 검사기에 대한 변경을 방지하여 업그레이드 위한 컬렉션 준비합니다.
유효성 검사 수준을 constraint로 설정합니다.
collMod를 실행하여 validationLevel를 constraint로 설정하다 . validationAction는 error 또는 errorAndLog이어야 합니다:
db.runCommand( { collMod: "movies", validationLevel: "constraint", validationAction: "error" } )
validationLevel를 constraint로 업그레이드하는 동일한 collMod 작업에서는 validator를 변경할 수 없습니다. 이 명령을 실행 전에 유효성 검사 규칙을 설정하세요. 나중에 규칙을 변경하려면 수준을 strict로 다운그레이드하고 규칙을 수정한 다음 constraint로 다시 업그레이드 .
validationLevel가 constraint이므로 MongoDB 기존 문서 업그레이드 전에 규칙을 충족했는지 여부에 관계없이 모든 문서 삽입 및 업데이트에 유효성 검사 규칙을 적용합니다.
수준을 constraint로 설정하다 MongoDB 컬렉션 의 모든 기존 문서를 스캔하고 문서 유효성 검사기를 위반하면 collMod 작업을 실패합니다. 이 스캔은 대규모 컬렉션의 경우 계산 비용이 많이 들 수 있습니다. 작업이 실패하면 계속하기 전에 위반 문서를 업데이트 유효성 검사기를 통과하세요.
중요
오류 출력은 사람이 볼 수 있도록 만들어졌습니다. 향후 변경될 수 있으며 스크립트에 의존해서는 안 됩니다.