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
/ /
Schemas

Tipos de esquema

Los siguientes campos están disponibles para todos los esquemas BSON independientemente del tipo:

{
"bsonType": "<BSON Type>" | ["<BSON Type>", ...],
"type": "<JSON Type>" | ["<JSON Type>", ...],
"enum": [<Value 1>, <Value 2>, ...],
"description": "<Descriptive Text>,
"title": "<Short Description>"
}
Nombre de campo
Descripción

bsonType

El tipo BSON de la propiedad que describe el esquema. Si el valor de la propiedad puede ser de varios tipos, especifique un arreglo de tipos BSON. No se puede usar con el campo type.

Los tipos BSON incluyen todos los tipos JSON, así como tipos adicionales a los que puede hacer referencia por nombre:

  • double

  • string

  • object

  • array

  • objectId

  • date

  • bool

  • null

  • regex

  • int

  • timestamp

  • long

  • decimal

  • uuid

  • binData

  • mixed

type

El tipo JSON de la propiedad que describe el esquema. Si el valor de la propiedad puede tener varios tipos, especifique un arreglo de tipos JSON. No puede usarse con bsonType.

Importante

Atlas App Services supports the type field to maintain compatibility with the JSON schema standard. However, we recommend that you use the bsonType field instead. BSON types include all JSON schema types and support even more data types.

The following standard JSON types are available:

  • object

  • array

  • number

  • boolean

  • string

  • null

Nota

La implementación del esquema JSON de MongoDB no admite el tipo JSON integer. En su lugar, utilice el campo bsonType con int o long como valor.

enum

Una matriz que incluye todos los valores válidos para los datos que describe el esquema.

title

Un título o nombre corto para los datos que modela el esquema. Este campo se utiliza únicamente para metadatos y no afecta la validación del esquema.

description

Una descripción detallada de los datos que modela el esquema. Este campo se utiliza únicamente para metadatos y no afecta la validación del esquema.

Un array contiene varios valores de un tipo específico. Los esquemas BSON array utilizan el estándar Matriz de esquemas JSON formato.

{
"bsonType": "array",
"items": <Schema Document> | [<Schema Document>, ...],
"additionalItems": <boolean> | <Schema Document>,
"maxItems": <integer>,
"minItems": <integer>,
"uniqueItems": <boolean>
}
Nombre de campo
Descripción

items

A schema for all array items, or an array of schemas where order matters.

additionalItems

Por defecto: true.

If true, the array may contain additional values that are not defined in the schema. If false, only values that are explicitly listed in the items array may appear in the array.

Si el valor es un objeto de esquema, cualquier campo adicional debe validarse con el esquema.

Nota

El campo additionalItems únicamente afecta a los esquemas de arreglos que tengan un campo items con valor de arreglo. Si el campo items es un objeto de esquema único, additionalItems no tiene ningún efecto.

maxItems

La longitud máxima del arreglo.

minItems

La longitud mínima de la matriz.

uniqueItems

Por defecto: false

If true, each item in the array must be unique. If false, multiple array items may be identical.

Tip

Las matrices únicas son conjuntos

Para modelar un conjunto, utilice el array tipo de esquema con uniqueItems establecido true en.

Un bool es true o false.

{ "bsonType": "bool" }

Nota

Aplicaciones creadas después del 28 de mayo de 2024

Las aplicaciones de App Services creadas después del de mayo 28 del2024 pueden almacenar colecciones (matrices y diccionarios) de datos mixtos dentro de una propiedad de datos mixtos. Es posible anidar colecciones dentro de otras colecciones, lo que permite almacenar estructuras de datos complejas, como documentos JSON o MongoDB, sin tener que definir un modelo de datos estricto.

Para utilizar esta función con Atlas Device SDK, debe utilizar una de las siguientes versiones mínimas del SDK:

  • C++ SDK: version TBD

  • Flutter SDK: v2.0.0 o posterior

  • SDK de Kotlin: v2.0.0 o posterior

  • SDK de .NET: v12.2.0 o posterior

  • Node.js SDK: v12.9.0 or later

  • React Native SDK: v12.9.0 or later

  • Swift SDK: v10.51.0 o posterior

Esta función no es compatible con el SDK de Java.

Puedes contactar con el soporte para obtener más información sobre cómo habilitar esta funcionalidad en una aplicación existente utilizando un SDK compatible.

Un mixed campo puede contener cualquier tipo de esquema, excepto objetos incrustados, conjuntos(sets) o cualquier contador{@(counters) compatible con el SDK. Aplicación Services no aplica un tipo coherente en los documentos, por lo que dos documentos diferentes pueden tener valores de distintos tipos.

Los campos mixtos pueden almacenar matrices y diccionarios de datos mixtos. Sync los traduce a MongoDB como matrices y objetos, respectivamente. Estas colecciones de datos mixtos también pueden contener otras colecciones de datos mixtos, con una profundidad máxima de 100 niveles. Puede aprovechar esta flexibilidad para almacenar estructuras de datos complejas que, de otro modo, no encajarían en un esquema predefinido, como datos JSON variables o documentos complejos de MongoDB.

Los campos mixtos también pueden representar relaciones. Sync traduce estas relaciones en MongoDB como DBRef para preservar el nombre de la base de datos, el nombre de la colección y la llave primaria del vínculo.

{ "bsonType": "mixed" }

Un number configura genéricamente algún tipo de número. Los esquemas BSON amplían numéricos de JSON Schema con tipos adicionales que permiten definir enteros, flotantes y decimales.

{
"bsonType": "number" | "int" | "long" | "double" | "decimal",
"multipleOf": <number>,
"maximum": <number>,
"exclusiveMaximum": <boolean>,
"minimum": <number>,
"exclusiveMinimum": <boolean>
}
Nombre de campo
Descripción

multipleOf

An integer divisor of the field value. For example, if multipleOf is set to 3, 6 is a valid value but 7 is not.

maximum

The maximum value of the number.

exclusiveMaximum

Por defecto: false

Si es true, el valor del campo debe ser estrictamente menor que el valor maximum. Si es false, el valor del campo también puede ser igual al valor maximum.

minimum

The minimum value of the number.

exclusiveMinimum

Por defecto: false

Si true, el valor del campo debe ser estrictamente mayor que el valor minimum. Si false, el valor del campo también puede ser igual al valor minimum.

Un object es un objeto estructurado con string claves que cada una tiene un valor tipado. Objetos representan objetos Realm y objetos incrustados en realms sincronizados así como los documentos a los que hacen referencia en MongoDB.

{
"bsonType": "object",
"title": "<Type Name>",
"required": ["<Required Field Name>", ...],
"properties": {
"<Field Name>": <Schema Document>
},
"minProperties": <integer>,
"maxProperties": <integer>,
"patternProperties": {
"<Field Name Regex>": <Schema Document>
},
"additionalProperties": <boolean> | <Schema Document>,
"dependencies": {
"<Field Name>": <Schema Document> | ["<Field Name>", ...]
}
}
Nombre de campo
Descripción

required

Una matriz de nombres de campos que deben incluirse en el documento.

title

Un nombre de tipo para el objeto. App Services usa este valor para nombrar el tipo del documento en la API de GraphQL. (GraphQL está obsoleto. Más información)

properties

Un objeto donde cada campo se asigna a un campo en el objeto principal por nombre. El valor de cada campo es un documento de esquema que configura el valor del campo.

minProperties

El número mínimo de campos permitidos en el objeto.

maxProperties

The maximum number of fields allowed in the object.

patternProperties

An object where each field is a regular expression string that maps to all fields in the parent object that match. The value of each field is a schema document that configures the value of matched fields.

additionalProperties

Por defecto: true.

Si es true, un documento puede contener campos adicionales no definidos en el esquema. Si es false, solo los campos definidos explícitamente en el esquema pueden aparecer en un documento.

Si el valor es un objeto de esquema, cualquier campo adicional debe validarse con el esquema.

dependencies

Especificar dependencias de propiedades y esquemas.

Nota

Diccionarios de modelos con el tipo de esquema de objeto

Para modelar diccionarios, utiliza el tipo de esquema object con additionalProperties ajustado al tipo de objeto Realm de los valores almacenados en el diccionario.

Un objectId es un 12identificador de bytes para objetos BSON. Los valores ObjectId se utilizan habitualmente como _id valores únicos de documentos en una colección de MongoDB o de objetos en un dominio sincronizado.

{ "bsonType": "objectId" }

Un string es texto codificado como una serie de caracteres. Los string esquemas BSON utilizan el formato de cadena de esquema JSON estándar.

{
"bsonType": "string",
"maxLength": <integer>,
"minLength": <integer>,
"pattern": "<Regular Expression>"
}
Nombre de campo
Descripción

maxLength

El número máximo de caracteres en la cadena.

minLength

El número mínimo de caracteres de la string.

pattern

Una cadena de expresión regular que debe coincidir con el valor de la cadena.

Un uuid (Identificador Universal Único) es un estandarizado object identifier de 16bytes.

{ "bsonType": "uuid" }

A binData is a piece of unstructured binary data. Maps to the binary BSON type. Always uses subtype 0.

{ "bsonType": "binData" }

Los tipos de bases de datos de Realm son específicos de Atlas Device SDK.

For more information on SDK-specific types and how to define them, refer to the SDK documentation:

Un contador es un tipo numérico especial cuyo valor puede incrementarse o decrementarse. Se asigna al long tipo de número en App Services.

{ "bsonType": "long" }

Los tipos de datos de contador solo se admiten en los siguientes SDK:

Un conjunto es una colección de valores únicos.

Un esquema establecido es un esquema array donde uniqueItems se establece en true.

{
"bsonType": "array",
"uniqueItems": true,
"items": {
"bsonType": "long"
}
}

A dictionary is a collection of dynamic and unique string keys paired with values of a given type. A dictionary is functionally an object or document without pre-defined field names.

A dictionary schema is an object schema where properties is not defined and the value of additionalProperties is a schema for the dictionary value's type.

Para almacenar un diccionario con valores de un tipo BSON, establece additionalProperties en el esquema de ese tipo.

{
"bsonType": "object",
"additionalProperties": {
"bsonType": "string"
}
}
}

Para almacenar un diccionario con valores mixtos, establece additionalProperties a true:

{
"bsonType": "object",
"additionalProperties": true
}
}

Alternativamente, puede definir un esquema mixed completo:

{
"bsonType": "object",
"additionalProperties": {
"bsonType": "mixed"
}
}
}

Para almacenar un diccionario con valores de objetos incrustados, define un esquema object con el campo title configurado en el nombre del tipo del objeto incrustado:

{
"bsonType": "object",
"additionalProperties": {
"bsonType": "object",
"title": "Address",
"properties": {
"streetNumber": { "bsonType": "string" },
"street": { "bsonType": "string" },
"city": { "bsonType": "string" },
"province": { "bsonType": "string" },
"country": { "bsonType": "string" },
"postalCode": { "bsonType": "string" }
}
}
}

Los datos geoespaciales describen puntos y otros datos sobre la superficie terrestre. App Services no cuenta con tipos geoespaciales integrados. En su lugar, se modelan los datos geográficos mediante objetos GeoJSON estándar.

A GeoJSON Point (GeoPoint) is a single location on the Earth's surface. The GeoPoint schema must be a required type field, of type string, which is always set to "Point".

También debe proporcionar un campo coordinates, que es una matriz de valores dobles. La matriz coordinates debe contener al menos dos valores dobles y puede contener un tercero:

  • El primer doble es la longitud del punto, entre -180 y 180.

  • La segunda es la latitud, entre -90 y 90.

  • El tercer valor opcional representa la elevación/altitud del punto, en metros. Atlas ignora este valor al realizar queries.

Nota

No se puede establecer un arreglo como obligatorio en un esquema de Device Sync, por lo que el servidor Sync verifica que el campo coordinates esté presente y cumpla con los requisitos.

If you are not using Device Sync, you can query your geospatial data with regular geospatial operators. However, if you are using Atlas Device Sync, the following rules also apply to the GeoPoint object:

  • Debe ser del tipo object.

  • Debe estar incrustado dentro de otro tipo.

  • Se permiten valores adicionales dentro del arreglo coordinates, siempre que sean doubles (decimales).

  • También se permiten propiedades adicionales en el objeto GeoPoint.

El siguiente es el esquema de Device Sync de un objeto con una propiedad GeoPoint incrustada llamada «ubicación»:

{
"title": "MyObject",
"properties": {
"_id": {
"bsonType": "objectId"
},
"location": {
"bsonType": "object",
"required": [ "type" ],
"properties": {
"type": {
"bsonType": "string",
},
"coordinates": {
"bsonType": "array",
"items": {
"bsonType": "double"
}
}
}
}
}
}

The following code block shows a document that follows the schema. It has a single embedded GeoPoint object named "location".

{
"_id": { "$oid": "65039d09fe4e46dddee31a3f" },
"location": {
"type": "Point",
"coordinates": [-122.4, 48.12, 23.0]
}
}

Volver

Remover un esquema

En esta página