Menu Docs
Página inicial do Docs
/ /
Serviços Atlas App
/

Esquemas

Nesta página

  • Visão geral
  • O que é um esquema?
  • Por que definir um esquema?
  • Definir um esquema
  • Como o App Services aplica esquemas
  • Esquema do App Services vs. validação de esquema integrada

Um esquema é um objeto JSON que define a estrutura e o conteúdo dos seus dados. Você pode usar os esquemas de BSON do Atlas App Services, que estendem o padrão do esquema de JSON para definir o modelo de dados do seu aplicativo e validar documentos sempre que forem criados, alterados ou excluídos.

Os esquemas representam tipos de dados em vez de valores específicos. Os Serviços de Aplicativo oferecem suporte a muitostipos de esquema do integrados. Isso inclui primitivos, como strings e números, bem como tipos estruturas, como objetos e arrays, que você pode combinar para criar esquemas que representam tipos de objetos personalizados.

Por exemplo, esse é um esquema básico para dados sobre carros e alguns objetos de carros que estão em conformidade com o 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
}

Esquemas são a especificação do modelo de dados do seu aplicativo. Depois de definir um esquema, o App Services fornece ferramentas e serviços adicionais para trabalhar com dados que estejam em conformidade com o esquema.

O App Services usa esquemas em muitos serviços de aplicativos:

  • O Atlas Device Sync usa esquemas para sincronizar dados entre domínios e o MongoDB Atlas. O App Services também pode gerar modelos de objetos de SDK idiomáticos para você com base em seus esquemas.

  • As regras de acesso a dados validam a conformidade dos dados com seu esquema antes e depois de cada solicitação. Se algum documento falhar na validação, o App Services impedirá ou reverterá a solicitação na íntegra.

Um esquema de collection em nível de raiz pode conter esquemas adicionais que descrevem as propriedades do tipo. Cada esquema de nível de raiz é um esquema object que tem a seguinte forma:

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

Você pode usar qualquer um dos tipos de esquema suportados para configurar as propriedades do objeto:

Observação

Para saber como configurar e implantar um esquema em seu aplicativo, consulte Definir e aplicar um esquema.

O App Services valida todas as operações de gravação (inserções, atualizações e exclusões) em uma collection do MongoDB em relação ao seu esquema de collection. Ele verifica cada documento antes e depois de cada solicitação para garantir que todas as propriedades estejam em conformidade com o esquema e que não tenham ocorrido alterações inválidas.

O App Services avalia o resultado de todas as gravações de documentos e as compara com o esquema antes de confirmar as gravações em seu cluster. Se o resultado de qualquer operação de gravação em uma solicitação não corresponder ao esquema, o App Services retornará um erro ao usuário sem aplicar alterações na solicitação.

Exemplo

Uma collection tem o seguinte esquema:

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

Um usuário com permissão para ler e gravar todos os campos deseja atualizar o campo name de um documento específico. Eles emitem a seguinte query:

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

A query tenta definir o valor de name para o número 42, mas o esquema requer que o valor seja uma string. O App Services rejeitará essa operação de gravação mesmo que o usuário tenha permissão para atualizar o documento porque o resultado da gravação não está em conformidade com o esquema.

Um esquema no App Services não é o mesmo que a que a validação de esquema integrada do MongoDB. Ambos usam o padrão de JSON schema com suporte adicional para tipos de BSON. No entanto, o App Services não usa o esquema incorporado do cluster e pode interagir com o cluster de uma forma incompatível com um esquema incorporado.

Se você quiser usar esquemas do App Services e a validação de esquema interna do cluster ao mesmo tempo, considere o seguinte:

  • Defina inicialmente o nível de validação de esquema do seu cluster para "aviso". Em seguida, monitore a atividade e resolva os avisos existentes. Quando tiver certeza de que as duas camadas de validação de esquema são compatíveis, você pode atualizar o nível de validação para "erro".

  • Se estiver usando o Device Sync, evite campos obrigatórios para documentos incorporados e arrays de documentos incorporados. O protocolo de sincronização pode quebrar uma gravação de objeto embarcado válido em várias gravações equivalentes que não incluem individualmente todos os campos obrigatórios.

  • Se você estiver usando o Device Sync, evite distinguir entre undefined, null, arrays vazias e objetos embarcados sem campos. O protocolo de sincronização trata esses valores como equivalentes funcionais.

Se precisar de ajuda para trabalhar com as duas camadas de validação de esquema simultaneamente, entre em contato com o Suporte do MongoDB.

Voltar

Definir um Modelo de Dados

Próximo

Definir e impor um esquema