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 una matriz 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 ser de varios tipos, especifique una matriz de tipos JSON. No se puede usar con bsonType.

Importante

Atlas App Services admite el campo type para mantener la compatibilidad con el estándar de esquema JSON. Sin embargo, recomendamos usar el campo bsonType en su lugar. Los tipos BSON incluyen todos los tipos de esquema JSON y admiten incluso más tipos de datos.

Los siguientes tipos JSON estándar están disponibles:

  • 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

Un esquema para todos los elementos de una matriz, o una matriz de esquemas donde el orden importa.

additionalItems

Por defecto: true.

Si es true, la matriz puede contener valores adicionales no definidos en el esquema. Si es false, solo los valores explícitamente enumerados en la matriz items pueden aparecer en ella.

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

Nota

El campo additionalItems solo afecta a los esquemas de matriz que tienen un campo items con valor de matriz. Si el campo items es un único objeto de esquema, additionalItems no tiene efecto.

maxItems

La longitud máxima de la matriz.

minItems

La longitud mínima de la matriz.

uniqueItems

Por defecto: false

Si es true, cada elemento de la matriz debe ser único. Si es false, varios elementos de la matriz pueden ser idénticos.

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:

  • SDK de C++: versión por determinar

  • SDK de Flutter: v2.0.0 o posterior

  • SDK de Kotlin: v2.0.0 o posterior

  • SDK de .NET: v12.2.0 o posterior

  • SDK de Node.js: v12.9.0 o posterior

  • SDK de React Native: v12.9.0 o posterior

  • Swift SDK: v10.51.0 o posterior

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

Puede comunicarse con el soporte técnico para obtener más información sobre cómo habilitar esta función en una aplicación existente usando 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 a MongoDB como una DBRef para conservar el nombre de la base de datos, el nombre de la colección y la clave principal del enlace.

{ "bsonType": "mixed" }

Un number configura genéricamente algún tipo de número. Los esquemas BSON extienden los esquemas numéricos JSON con tipos adicionales para definir números 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

Un divisor entero del valor del campo. Por ejemplo, si multipleOf se establece en 3, 6 es un valor válido, pero 7 no.

maximum

El valor máximo del número.

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

El valor mínimo del número.

exclusiveMinimum

Por defecto: false

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

Un object es un objeto estructurado con claves string, cada una con un valor tipificado. Los objetos representan objetos de dominio y objetos incrustados en dominios sincronizados, así como los documentos a los que se asignan 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 del objeto principal por nombre. El valor de cada campo es un documento de esquema que configura su valor.

minProperties

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

maxProperties

El número máximo de campos permitidos en el objeto.

patternProperties

Un objeto donde cada campo es una cadena de expresión regular que asigna todos los campos coincidentes del objeto principal. El valor de cada campo es un documento de esquema que configura el valor de los campos coincidentes.

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 propiedades y dependencias del esquema.

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 en la cadena.

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

Un binData es un dato binario no estructurado. Se asigna al tipo binario BSON. Siempre usa el 0 subtipo.

{ "bsonType": "binData" }

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

Para obtener más información sobre los tipos específicos del SDK y cómo definirlos, consulte la documentación del SDK:

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

Un diccionario es una colección de claves string dinámicas y únicas, emparejadas con valores de un tipo determinado. Funcionalmente, un diccionario es un objeto o documento sin nombres de campo predefinidos.

Un esquema de diccionario es un esquema object donde properties no está definido y el valor de additionalProperties es un esquema para el tipo del valor del diccionario.

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,additionalProperties configure true en:

{
"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.

Un punto GeoJSON (GeoPoint) es una ubicación única en la superficie terrestre. El esquema GeoPoint debe ser un type campo obligatorio, de string tipo, que siempre se establece en "Punto".

También debe proporcionar un campo coordinates, que es una matriz de valores dobles. La matriz coordinates debe contener al menos 2 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.

Si no utiliza Device Sync, puede consultar sus datos geoespaciales con operadores geoespaciales habituales. Sin embargo, si utiliza Atlas Device Sync, las siguientes reglas también se aplican al objeto GeoPoint:

  • 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 sincronización de dispositivo de un objeto con una propiedad GeoPoint incorporada denominada "ubicación":

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

El siguiente bloque de código muestra un documento que sigue el esquema. Contiene un único objeto GeoPoint incrustado llamado "ubicación".

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

Volver

Remover un esquema

En esta página