Docs Menu
Docs Home
/ /

Especifique los valores de campo permitidos

Cuando creas un Esquema JSON: permite especificar los valores permitidos en un campo específico. Esta función garantiza que los valores de los campos pertenezcan a un conjunto esperado, como una lista de países. Asimismo, esta función ayuda a evitar errores humanos, como errores tipográficos, al insertar datos en una colección.

Para especificar una lista de valores permitidos, utilice el enum Palabra clave en su esquema JSON. La palabra clave enum significa "enumerar" y se utiliza para listar los posibles valores de un campo.

Considere una empresa de ropa que solo envía productos a Francia, Reino Unido y Estados Unidos. En el validador, puede indicar los valores de país permitidos y rechazar documentos que especifiquen un país diferente.

1

Cree una shipping colección y utilice el $jsonSchema operador para establecer reglas de validación del esquema:

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"
}
}
}
}
} )

El campo enum en el objeto country solo permite documentos donde el campo country sea France, United Kingdom o United States.

2

La siguiente operación de inserción falla porque country es Germany, que no está en la lista de valores permitidos.

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

La operación devuelve este error:

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

La inserción se realiza correctamente después de cambiar el campo country a uno de los valores permitidos:

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

Para confirmar que el documento se insertó correctamente, consulte la colección shipping:

db.shipping.find()

MongoDB devuelve el documento:

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

Volver

Specify JSON Validation

En esta página