Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / /

허용된 필드 값 지정

이 페이지의 내용

  • Context
  • 단계

JSON Schema를 생성할 때 특정 필드에 허용되는 값을 지정할 수 있습니다. 이 기능을 통해 필드 값이 예상되는 값 세트(예: 국가 목록)에 속하도록 할 수 있습니다. 이 기능을 사용하면 컬렉션에 데이터를 삽입할 때 인간의 오류(예: 오타)를 방지할 수도 있습니다.

허용되는 값의 목록을 지정하려면 JSON schema에 enum 키워드를 사용합니다. enum 키워드는 "열거"를 의미하며, 필드의 가능한 값을 나열하는 데 사용됩니다.

프랑스, 영국, 미국에만 제품을 배송하는 의류 회사를 생각해 보겠습니다. 유효성 검사기에서 허용된 국가 값을 나열하고, 다른 국가를 지정하는 문서를 거부할 수 있습니다.

1

0} 컬렉션을 $jsonSchema 만들고 shipping 연산자를 사용하여 스키마 유효성 검사 규칙을 설정합니다.

db.createCollection("shipping", {
validator: {
$jsonSchema: {
bsonType: "object",
title: "Shipping Country Validation",
properties: {
country: {
enum: [ "France", "United Kingdom", "United States" ],
description: "Must be either France, United Kingdom, or United States"
}
}
}
}
} )

country 객체의 enum 필드는 country 필드가 France, United Kingdom 또는 United States 인 문서만 허용합니다.

2

country가 허용된 값 목록에 없는 Germany 이므로 다음 삽입 작업이 실패합니다.

db.shipping.insertOne( {
item: "sweater",
size: "medium",
country: "Germany"
} )

이 작업은 다음 오류를 반환합니다.

MongoServerError: Document failed validation
Additional information: {
failingDocumentId: ObjectId("630d1057931191850b40d0aa"),
details: {
operatorName: '$jsonSchema',
title: 'Shipping Country Validation',
schemaRulesNotSatisfied: [
{
operatorName: 'properties',
propertiesNotSatisfied: [
{
propertyName: 'country',
description: 'Must be either France, United Kingdom, or United States',
details: [
{
operatorName: 'enum',
specifiedAs: {
enum: [ 'France', 'United Kingdom', 'United States' ]
},
reason: 'value was not found in enum',
consideredValue: 'Germany'
}
]
}
]
}
]
}
}
3

country 필드를 허용된 값 중 하나로 변경하면 삽입이 성공합니다.

db.shipping.insertOne( {
item: "sweater",
size: "medium",
country: "France"
} )
4

문서가 성공적으로 삽입되었는지 확인하려면 shipping 컬렉션을 쿼리합니다.

db.shipping.find()

MongoDB가 문서를 반환합니다:

[
{
_id: ObjectId("630d10d5931191850b40d0ab"),
item: 'sweater',
size: 'medium',
country: 'France'
}
]

돌아가기

Specify JSON Validation

이 페이지의 내용