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 un arreglo 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 tener varios tipos, especifique un arreglo de tipos JSON. No puede usarse con ImportanteAtlas App Services supports the The following standard JSON types are available:
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 |
|---|---|
| A schema for all array items, or an array of schemas where order matters. |
| Por defecto: If Si el valor es un objeto de esquema, cualquier campo adicional debe validarse con el esquema. NotaEl campo |
| La longitud máxima del arreglo. |
| La longitud mínima de la matriz. |
| Por defecto: If TipLas matrices únicas son conjuntosPara modelar un conjunto, utilice el |
Booleano
Un bool es true o false.
{ "bsonType": "bool" }
Mezclado
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" }
Número
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 |
|---|---|
| An integer divisor of the field value. For example, if |
| The maximum value of the number. |
| Por defecto: Si es |
| The minimum value of the number. |
| Por defecto: Si |
Objeto
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 |
|---|---|
| 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 en el objeto principal por nombre. El valor de cada campo es un documento de esquema que configura el valor del campo. |
| El número mínimo de campos permitidos en el objeto. |
| The maximum number of fields allowed in the object. |
| 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. |
| Por defecto: Si es Si el valor es un objeto de esquema, cualquier campo adicional debe validarse con el esquema. |
| 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.
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 de la string. |
| 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
A binData is a piece of unstructured binary data. Maps to the binary BSON type. Always uses subtype 0.
{ "bsonType": "binData" }
Tipos de base de datos Realm
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:
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
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.
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, establece additionalProperties a true:
{ "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.
GeoJSON Point
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] } }