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
/ /
Define a Data Model

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.

Schemas represent types of data rather than specific values. App Services supports many built-in schema types. These include primitives, like strings and numbers, as well as structural types, like objects and arrays, which you can combine to create schemas that represent custom object types.

For example, this is a basic schema for data about cars and some car objects that conform to the schema:

{
"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 uses schemas in many application services:

  • Atlas Device Sync utiliza esquemas para sincronizar datos entre realms y MongoDB Atlas. Servicios de aplicación también puede generar modelos de Modelo de objeto SDK idiomáticos para ti en función de tus 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 tu aplicación, consulta 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 } }
)

The query attempts to set the value of name to the number 42, but the schema requires the value to be a string. App Services will reject this write operation even though the user had permission to update the document because the write result does not conform to the schema.

A schema in App Services is not the same as MongoDB's built-in schema validation. Both use the JSON schema standard with additional support for BSON types. However, App Services does not use your cluster's built-in schema and may interact with your cluster in a way that is incompatible with a built-in schema.

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.

If you need help in working with both schema validation layers simultaneously, contact MongoDB Support.

Volver

Define a Data Model

En esta página