Definición
Sintaxis
La expresión del operador $jsonSchema tiene la siguiente sintaxis:
{ $jsonSchema: <JSON Schema object> }
Donde el objeto de esquema JSON está formateado de acuerdo con el 4 borrador del estándar de esquema JSON.
{ <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 admite 4 el borrador del esquema JSON, incluyendo 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
Puede especificar las siguientes palabras clave en su esquema JSON.
Nota
MongoDB implementa un subconjunto de palabras clave disponibles en el esquema JSON. Para obtener una lista completa de omisiones, consulte Omisiones.
Keyword | Tipo | Definición | Comportamiento |
|---|---|---|---|
artículos adicionales | matrices | booleano u objeto | Si es un objeto, debe ser un esquema JSON válido |
Propiedades adicionales | objetos | booleano u 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 | alias de cadena o matriz de alias de cadena | Acepta lo mismo alias de cadena utilizados para el |
dependencies | objetos | Objeto | Describe dependencias de campos o esquemas |
Descripción | N/A | string | Una cadena que describe el esquema y no afecta la validación. A partir de MongoDB 5.1, si se especifica el campo |
enum | todo tipo | matriz de valores | Enumera todos los valores posibles del campo |
exclusivoMáximo | números | booleano | Si es verdadero y el campo es un número, |
exclusivoMínimo | números | booleano | Si es verdadero, |
elementos | matrices | objeto o matriz | Debe ser un esquema JSON válido o una matriz de esquemas JSON válidos |
máximo | números | Número | Indica el valor máximo del campo |
máximo de artículos | matrices | entero | Indica la longitud máxima de la matriz |
longitud máxima | cadenas | entero | Indica la longitud máxima del campo |
maxProperties | objetos | entero | Indica el número máximo de propiedades del campo. |
mínimo | números | Número | Indica el valor mínimo del campo |
minItems | matrices | entero | Indica la longitud mínima de la matriz |
minLongitud | cadenas | entero | Indica la longitud mínima del campo. |
minPropiedades | objetos | 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 esquema JSON | 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 | cadenas | cadena que contiene una expresión regular | El campo debe coincidir con la expresión regular |
Propiedades del patrón | objetos | Objeto | Además de los requisitos |
propiedades | objetos | Objeto | Un esquema JSON válido donde cada valor también es un objeto de esquema JSON válido |
Requerido | objetos | matriz de cadenas únicas | El conjunto de propiedades del objeto debe contener todos los elementos especificados en la matriz |
Título | N/A | string | Una string de título descriptiva sin efecto. |
tipo | todo tipo | cadena o matriz de cadenas únicas | Enumera los posibles tipos JSON del campo. Los tipos disponibles son "objeto", "matriz", "número", "booleano", "cadena" y "null". La implementación del esquema JSON de MongoDB no admite el tipo "integer". Utilice la palabra clave |
Artículos únicos | matrices | booleano | Si es verdadero, cada elemento de la matriz 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 hipertexto en 4 el borrador de la especificación del esquema JSON.
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: