Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

許可されるフィールド値の指定

項目一覧

  • Context
  • 手順

JSON schemaを作成するときに、特定のフィールドで許可される値を指定できます。 この機能を使用して、フィールドの値が、国のリストなど、予期される値のセットに属していることを確認します。 同様に、この機能を使用すると、コレクションにデータを挿入する際に入力ミスなどの人為的ミスを防ぐことができます。

許可される値のリストを指定するには、JSON schema で enum キーワードを使用します。enum キーワードは「列挙」を意味し、フィールドの可能な値をリスト化するために使用されます。

フランス、英国、米国にのみ製品を出荷する衣料品会社を考えてみましょう。バリデーターでは、許可されている国の値を一覧表示したり、別の国を指定するドキュメントを拒否したりできます。

1

shipping コレクションを作成し、$jsonSchema 演算子を使用してスキーマ検証を設定します。

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 フィールドが FranceUnited 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

項目一覧