Todos los tipos de esquemas
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 |
|---|---|
| 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 Los tipos BSON incluyen todos los tipos JSON, así como tipos adicionales a los que puede hacer referencia por nombre:
|
| 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 ImportanteAtlas App Services admite el campo Los siguientes tipos JSON estándar están disponibles:
NotaLa implementación del esquema JSON de MongoDB no admite el tipo JSON |
| Una matriz que incluye todos los valores válidos para los datos que describe el esquema. |
| 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. |
| 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. |
BSON Types
Arreglo
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 |
|---|---|
| Un esquema para todos los elementos de una matriz, o una matriz de esquemas donde el orden importa. |
| Por defecto: Si es Si el valor es un objeto de esquema, cualquier campo adicional debe validarse con el esquema. NotaEl campo |
| La longitud máxima de la matriz. |
| La longitud mínima de la matriz. |
| Por defecto: Si es TipLas matrices únicas son conjuntosPara modelar un conjunto, utilice el |
Booleano
Un bool es true o false.
{ "bsonType": "bool" }
Mixto
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" }
Número
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 |
|---|---|
| Un divisor entero del valor del campo. Por ejemplo, si |
| El valor máximo del número. |
| Por defecto: Si es |
| El valor mínimo del número. |
| Por defecto: Si es |
Objeto
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 |
|---|---|
| Una matriz de nombres de campos que deben incluirse en el documento. |
| 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) |
| 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. |
| El número mínimo de campos permitidos en el objeto. |
| El número máximo de campos permitidos en el objeto. |
| 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. |
| Por defecto: Si es Si el valor es un objeto de esquema, cualquier campo adicional debe validarse con el esquema. |
| 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.
ObjectId
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" }
String
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 |
|---|---|
| El número máximo de caracteres en la cadena. |
| El número mínimo de caracteres en la cadena. |
| Una cadena de expresión regular que debe coincidir con el valor de la cadena. |
UUID
Un uuid (Identificador Universal Único) es un estandarizado object identifier de 16bytes.
{ "bsonType": "uuid" }
Datos binarios
Un binData es un dato binario no estructurado. Se asigna al tipo binario BSON. Siempre usa el 0 subtipo.
{ "bsonType": "binData" }
Tipos de bases de datos de Realm
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:
Contador
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:
Configura
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" } }
Dictionary
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.
Diccionario de un tipo BSON
Para almacenar un diccionario con valores de un tipo BSON, establece additionalProperties en el esquema de ese tipo.
{ "bsonType": "object", "additionalProperties": { "bsonType": "string" } } }
Diccionario de tipos mixtos de BSON
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" } } }
Diccionario de objetos incrustados
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" } } } }
Datos geoespaciales
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.
Punto GeoJSON
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] } }