Definición
Sintaxis
La expresión del operador $jsonSchema tiene la siguiente sintaxis:
{ $jsonSchema: <JSON Schema object> }
Donde el objeto JSON Schema está formateado de acuerdo con borrador 4 del estándar de JSON schema.
{ <keyword1>: <value1>, ... }
Por ejemplo:
{ $jsonSchema: { required: [ "name", "major", "gpa", "address" ], properties: { name: { bsonType: "string", description: "must be a string and is required" }, address: { bsonType: "object", required: [ "zipcode" ], properties: { "street": { bsonType: "string" }, "zipcode": { bsonType: "string" } } } } } }
JSON Schema
MongoDB es compatible con el borrador 4 del Esquema JSON, incluido la especificación principal y la especificación de validación, con algunas diferencias. Para más detalles, consulte Extensiones y Omisiones.
Para obtener más información sobre JSON Schema, consulta el sitio web oficial.
Palabras clave disponibles
Puedes especificar las siguientes palabras clave en tu JSON schema.
Nota
MongoDB implementa un subconjunto de palabras clave disponibles en JSON Schema. Para una lista completa de omisiones, consulta Omisiones.
Keyword | Tipo | Definición | Comportamiento |
|---|---|---|---|
itemsAdicionales | Arreglos | Booleano o objeto | Si es un objeto, debe ser un JSON Schema válido |
Propiedades adicionales | objeto | Booleano o objeto | Si Se establece por defecto en |
allOf | todo tipo | matriz de objetos de esquema JSON | El campo debe coincidir con todos los esquemas especificados |
anyOf | todo tipo | matriz de objetos de esquema JSON | El campo debe coincidir con al menos uno de los esquemas especificados |
bsonType | todo tipo | string alias o arreglo de alias de string | Acepta igual alias de string usado para el operador |
dependencies | objeto | Objeto | Describe las dependencias de campos o esquemas |
Descripción | N/A | string | A string que describe el esquema y no tiene ningún efecto en la validación. A partir de MongoDB 5.1, si se especifica el campo |
enum | todo tipo | arreglo de valores | Enumera todos los valores posibles del campo |
exclusivoMáximo | números | booleano | Si es verdadero y el campo es un número, |
exclusiveMinimum | números | booleano | Si es verdadero, |
elementos | Arreglos | objeto o matriz | Debe ser un JSON Schema válido o un arreglo de JSON Schemas válidos. |
máximo | números | Número | Indica el valor máximo del campo |
maxItems | Arreglos | entero | Indica la longitud máxima del arreglo |
longitud máxima | Cuerdas | entero | Indica la longitud máxima del campo |
maxProperties | objeto | entero | Indica el número máximo de propiedades del campo. |
mínimo | números | Número | Indica el valor mínimo del campo |
minÍtems | Arreglos | entero | Indica la longitud mínima del arreglo |
minLength | Cuerdas | entero | Indica la longitud mínima del campo |
minPropiedades | objeto | entero | Indica el número mínimo de propiedades del campo |
múltipleDe | números | Número | El campo debe ser un múltiplo de este valor |
no | todo tipo | un objeto de JSON Schema | El campo no debe coincidir con el esquema |
uno de | todo tipo | matriz de objetos de esquema JSON | El campo debe coincidir exactamente con uno de los esquemas especificados |
Patrón | Cuerdas | cadena que contiene una expresión regular | El campo debe coincidir con la expresión regular |
patternProperties | objeto | Objeto | Además de los requisitos |
Propiedades | objeto | Objeto | Un esquema JSON válido donde cada valor también sea un objeto JSON Schema válido |
Requerido | objeto | matriz de cadenas únicas | El conjunto de propiedades del objeto debe contener todos los elementos especificados en el arreglo |
Título | N/A | string | Una string de título descriptiva sin efecto. |
tipo | todo tipo | string o arreglo de cadenas únicas | Enumera los posibles tipos JSON del campo. Los tipos disponibles son "objeto", "arreglo", "número", "booleano", "string" y "nulo". La implementación de MongoDB del esquema JSON no admite el tipo "entero". Utilza la palabra clave |
Artículos únicos | Arreglos | booleano | Si es verdadero, cada elemento del arreglo debe ser único. De lo contrario, no se aplica ninguna restricción de unicidad. |
Extensiones
La implementación de JSON Schema de MongoDB incluye la adición de la palabra clave bsonType, que te permite utilizar todos los tipos BSON en el operador $jsonSchema. bsonType acepta los mismos alias de cadena utilizados para el operador $type.
Omisiones
Los siguientes no son compatibles con la implementación del esquema JSON de MongoDB:
Definiciones de hipervínculo en el borrador 4 de la especificación JSON Schema.
Las palabras clave:
$ref$schemadefaultdefinitionsformatid
El
integertipo. Debe utilizar el tipo BSONintolongcon labsonTypepalabra clave.Propiedades de hipermedia y vinculación del esquema JSON, incluido el uso de referencias JSON y punteros JSON.
Palabras clave desconocidas.
Ejemplos
Para ver ejemplos que utilizan $jsonSchema, consulte las siguientes páginas: