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

기존 문서에 대한 유효성 검사 수준 지정

유효성 검사 추가하기 전에 컬렉션 에 이미 존재하는 문서의 경우 MongoDB 이러한 문서에 유효성 검사 규칙을 적용하는 방법을 지정할 수 있습니다.

스키마의 validationLevel에 따라 MongoDB가 유효성 검사 규칙을 적용하는 문서가 결정됩니다.

유효성 검사 수준
행동

moderate

MongoDB 는 유효성 검사 검사 규칙과 일치하는 기존의 유효한 문서에 대한 문서 삽입 및 업데이트에 동일한 유효성 검사 규칙을 적용합니다. 유효성 검사 규칙과 일치하지 않는 컬렉션 의 기존 문서에 대한 업데이트는 유효성 검사 검사를 통과할 필요가 없습니다.

strict

(기본값) MongoDB 는 모든 문서 삽입 및 업데이트에 동일한 유효성 검사 규칙을 적용합니다.

constraint

MongoDB 모든 문서 삽입 및 업데이트에 유효성 검사 규칙을 적용하고 컬렉션 의 모든 문서 규칙을 충족하도록 보장 . strict과 달리 constraint 유효성 검사 포함된 컬렉션 수준을 설정하다 전에 유효하지 않은 문서를 포함할 수 없습니다. 이 수준에는 다음과 같은 제한 사항이 추가됩니다.

  • 유효성 검사 조치 error 또는 errorAndLog여야 합니다.

  • 수준이 constraint인 동안에는 스키마 유효성 검사 규칙을 수정할 수 없습니다. 유효성 검사 규칙을 변경하려면 strict(으)로 다운그레이드하고 규칙을 수정한 다음 constraint(으)로 다시 업그레이드 .

버전 9.0에 추가 되었습니다.

이 페이지의 예시에서는 movies 컬렉션 사용합니다. 컬렉션 만들고 예제에 사용되는 문서를 삽입하려면 다음 명령을 실행 .

db.movies.insertMany( [
{ title: "The Godfather", year: 1972 },
{ title: "Casablanca", year: 1942 }
] )

다음 예시 movies 컬렉션 에 moderate 유효성 검사기를 추가하고 유효성 검사 규칙을 충족하는 문서 삽입합니다.

1

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 모든 문서 삽입 및 이미 규칙을 충족하는 기존 문서의 업데이트에 유효성 검사 규칙을 적용합니다.

2

다음 삽입 명령은 유효성 검사 규칙을 충족하는 title 필드 와 문자열 값이 포함된 문서 추가합니다.

db.movies.insertOne(
{ title: "Wings", year: 1927 }
)
3

문서 유효성 검사 규칙을 충족하기 때문에 삽입이 성공합니다. MongoDB 다음과 유사한 출력을 반환합니다.

{
acknowledged: true,
insertedId: ...
}

다음 예시 movies 컬렉션 에 strict 유효성 검사기를 추가하고 유효성 검사 규칙을 충족하는 문서 삽입합니다.

1

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 모든 문서 삽입 및 업데이트에 유효성 검사 규칙을 적용합니다.

2

다음 삽입 명령은 유효성 검사 규칙을 충족하는 title 필드 와 문자열 값이 포함된 문서 추가합니다.

db.movies.insertOne(
{ title: "The Conversation", year: 1974 }
)
3

문서 유효성 검사 규칙을 충족하기 때문에 삽입이 성공합니다. MongoDB 다음과 유사한 출력을 반환합니다.

{
acknowledged: true,
insertedId: ...
}

참고

strict 유효성 검사 로 업그레이드 MongoDB 컬렉션 의 기존 문서가 유효성 검사기를 통과하는지 소급하여 확인하지 않습니다. 업그레이드 후 컬렉션 에 업그레이드 전에 존재했던 유효하지 않은 문서가 포함될 수 있습니다. 그러나 유효하지 않은 문서에 대한 업데이트 작업은 유효성 검사기로 인해 실패합니다. 유효하지 않은 문서 업데이트 하려면 먼저 유효성 검사기에 실패한 문제를 해결합니다.

다음 예시 movies 컬렉션 을 constraint 유효성 검사 수준으로 업그레이드합니다. constraint 레벨로 업그레이드 하면 MongoDB 컬렉션 에 이미 있는 모든 문서 유효성 검사기를 충족하는지 확인합니다.

참고

다음 절차는 이미 존재하는 컬렉션 에 적용됩니다. 컬렉션 생성할 때 validationLevel를 constraint로 설정하다 경우, 먼저 수준을 strict로 설정하다 하거나 컬렉션 준비할 필요가 없습니다.

1

컬렉션의 validationLevel가 아직 strict이 아닌 경우, 절차에 따라 엄격한 유효성 검사 지정하세요.

2

prepareConstraintValidationLevel를 true로 설정하다 collMod를 실행합니다.

db.runCommand( {
collMod: "movies",
prepareConstraintValidationLevel: true
} )

이 명령은 bypassDocumentValidation를 차단하고 유효성 검사기에 대한 변경을 방지하여 업그레이드 위한 컬렉션 준비합니다.

3

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 작업을 실패합니다. 이 스캔은 대규모 컬렉션의 경우 계산 비용이 많이 들 수 있습니다. 작업이 실패하면 계속하기 전에 위반 문서를 업데이트 유효성 검사기를 통과하세요.

4

다음 삽입 명령은 유효성 검사 규칙을 충족하는 title 필드 와 문자열 값이 포함된 문서 추가합니다.

db.movies.insertOne(
{ title: "Sunrise", year: 1927 }
)
5

문서 유효성 검사 규칙을 충족하기 때문에 삽입이 성공합니다. MongoDB 다음과 유사한 출력을 반환합니다.

{
acknowledged: true,
insertedId: ...
}

중요

오류 출력은 사람이 볼 수 있도록 만들어졌습니다. 향후 변경될 수 있으며 스크립트에 의존해서는 안 됩니다.