Docs Menu
Docs Home
/ /
Definir un modelo de datos

Schemas

Un esquema es un objeto JSON que define la estructura y el contenido de sus datos. Puede usar los esquemas BSON de Atlas App Services, que amplían... JSON Schema estándar, para definir el modelo de datos de su aplicación y validar documentos cada vez que se crean, modifican o eliminan.

Los esquemas representan tipos de datos en lugar de valores específicos. App Services admite muchos tipos de esquemas integrados. Estos incluyen primitivos, como cadenas y números, así como tipos estructurales, como objetos y matrices, que se pueden combinar para crear esquemas que representan tipos de objetos personalizados.

Por ejemplo, este es un esquema básico para datos sobre automóviles y algunos objetos de automóviles que se ajustan al esquema:

{
"title": "car",
"required": [
"_id",
"year",
"make",
"model",
"miles"
],
"properties": {
"_id": { "bsonType": "objectId" },
"year": { "bsonType": "string" },
"make": { "bsonType": "string" },
"model": { "bsonType": "string" },
"miles": { "bsonType": "number" }
}
}
{
"_id": ObjectId("5af712eff26b29dc5c51c60f"),
"year": "2017",
"make": "Honda",
"model": "Civic",
"miles": 117424
}
{
"_id": ObjectId("5af714eff24b294c5251cf04"),
"year": "2020",
"make": "Ford",
"model": "Mustang",
"miles": 13579
}

Los esquemas son la especificación del modelo de datos de tu aplicación. Una vez definido un esquema, App Services te proporciona herramientas y servicios adicionales para trabajar con datos que se ajustan a él.

App Services utiliza esquemas en muchos servicios de aplicación:

  • Atlas Device Sync utiliza esquemas para sincronizar datos entre dominios y MongoDB Atlas. App Services también puede generar modelos de objetos SDK idiomáticos basados ​​en sus esquemas.

  • Las reglas de acceso a datos validan que los datos se ajusten a su esquema antes y después de cada solicitud. Si algún documento no supera la validación, App Services bloquea o revierte toda la solicitud.

Un esquema de colección de nivel raíz puede contener esquemas adicionales que describen las propiedades del tipo. Cada esquema de nivel raíz es un object esquema que tiene la siguiente forma:

{
"bsonType": "object",
"title": "<Type Name>",
"required": ["<Required Field Name>", ...],
"properties": {
"<Field Name>": <Schema>
}
}

Puedes usar cualquiera de los tipos de esquema admitidos para configurar las propiedades del objeto:

Nota

Para aprender a configurar e implementar un esquema en su aplicación, consulte Definir y aplicar un esquema.

App Services valida todas las operaciones de escritura (inserciones, actualizaciones y eliminaciones) en una colección de MongoDB con respecto a su esquema. Comprueba cada documento antes y después de cada solicitud para garantizar que todas las propiedades se ajusten al esquema y que no se hayan producido cambios no válidos.

App Services evalúa el resultado de todas las escrituras de documentos y las compara con el esquema antes de confirmarlas en el clúster. Si el resultado de cualquier operación de escritura en una solicitud no coincide con el esquema, App Services devuelve un error al usuario sin aplicar ningún cambio en la solicitud.

Ejemplo

Una colección tiene el siguiente esquema:

{
"title": "person",
"properties": {
"_id": { "bsonType": "objectId" },
"name": { "bsonType": "string" }
}
}

Un usuario con permiso de lectura y escritura en todos los campos desea actualizar el campo name de un documento específico. Emite la siguiente consulta:

collection.updateOne(
{ "_id": BSON.ObjectId("5ae782e48f25b9dc5c51c4d0") },
{ "$set": { "name": 42 } }
)

La consulta intenta establecer el valor de name en 42, pero el esquema requiere que sea string. App Services rechazará esta operación de escritura, aunque el usuario tuviera permiso para actualizar el documento, porque el resultado de la escritura no se ajusta al esquema.

Un esquema en App Services no es lo mismo que la validación de esquemas integrada de MongoDB. Ambos utilizan el estándar de esquema JSON con compatibilidad adicional con tipos BSON. Sin embargo, App Services no utiliza el esquema integrado del clúster y podría interactuar con él de forma incompatible con un esquema integrado.

Si desea utilizar los esquemas de App Services y la validación de esquema integrada de su clúster al mismo tiempo, tenga en cuenta lo siguiente:

  • Establezca el nivel de validación del esquema de su clúster en "advertencia" inicialmente. Luego, supervise la actividad y aborde las advertencias existentes. Una vez que confirmes que ambas capas de validación de esquemas son compatibles, puedes actualizar el nivel de validación a "error".

  • Si usas Device Sync, evita los campos obligatorios para documentos incrustados y arreglos de documentos incrustados. El protocolo de sincronización puede dividir una escritura válida de un objeto incrustado en varias escrituras equivalentes que no incluyan individualmente todos los campos obligatorios.

  • Si utiliza Device Sync, evite distinguir entre undefined, null, matrices vacías y objetos incrustados sin campos. El protocolo de sincronización trata estos valores como equivalentes funcionales.

Si necesita ayuda para trabajar con ambas capas de validación de esquema simultáneamente, comuníquese con el soporte de MongoDB.

Volver

Definir un modelo de datos

En esta página