Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Specify JSON Validation

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 tu JSON schema. La palabra clave enum significa "enumerar" y se utiliza para enumerar los valores posibles de un campo.

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

1

Crea una colección shipping y usa el operador $jsonSchema para establecer reglas de validación de 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, lo cual no está en la lista de valores permitidos.

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

La operación devuelve el siguiente 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 que cambies 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, query 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