Tipos de esquema
Nesta página
Todos os tipos de esquema
Os seguintes campos estão disponíveis para todos os esquemas BSON, independentemente do tipo:
{ "bsonType": "<BSON Type>" | ["<BSON Type>", ...], "type": "<JSON Type>" | ["<JSON Type>", ...], "enum": [<Value 1>, <Value 2>, ...], "description": "<Descriptive Text>, "title": "<Short Description>" }
Nome do campo | Descrição |
---|---|
| O tipo de BSON da propriedade que o esquema descreve. Se o valor da propriedade puder ser de vários tipos, especifique uma array de tipos de BSON. Não pode ser usado com o campo Os tipos de BSON incluem todos os tipos de JSON, bem como tipos adicionais que você pode referenciar por nome:
|
| O tipo de JSON da propriedade que o esquema descreve. Se o valor da propriedade puder ser de vários tipos, especifique uma array de tipos de JSON. Não é possível usar com ImportanteAtlas App Services suporta o campo Os seguintes tipos JSON padrão estão disponíveis:
ObservaçãoA implementação do JSON schema do MongoDB não oferece suporte ao tipo de JSON |
| Uma array que inclui todos os valores válidos para os dados que o esquema descreve. |
| Um título ou nome curto para os dados que o esquema modela. Este campo é usado apenas para fins de metadados e não tem impacto na validação de esquema. |
| Uma descrição detalhada dos dados que o esquema modela. Este campo é usado apenas para fins de metadados e não tem impacto na validação de esquema. |
Tipos de JSON
Array
Um array
contém vários valores de um tipo específico. BSON array
Os esquemas usam o JSON schema array de padrão formato.
{ "bsonType": "array", "items": <Schema Document> | [<Schema Document>, ...], "additionalItems": <boolean> | <Schema Document>, "maxItems": <integer>, "minItems": <integer>, "uniqueItems": <boolean> }
Nome do campo | Descrição |
---|---|
| Um esquema para todos os itens da array ou uma array de esquemas onde a ordem é importante. |
| Padrão: Se Se o valor for um objeto de esquema, quaisquer campos adicionais deverão ser validados em relação ao esquema. ObservaçãoO campo |
| O comprimento máximo da array. |
| O comprimento mínimo da array. |
| Padrão: Se DicaArrays únicas são conjuntosPara modelar um conjunto, use o |
Boolean
Um bool
é true
ou false
.
{ "bsonType": "bool" }
Misto
Observação
Aplicativos criados após 28 de maio de 2024
Aplicativos App Services criados após 28 de maio de 2024 podem armazenar coleções (arrays e dicionários) de dados mistos em uma propriedade de dados mistos. Você pode agrupar coleções em outras coleções, o que permite armazenar estruturas de dados complexas, como documentos JSON ou MongoDB, sem precisar definir um modelo de dados restrito.
Para utilizar este recurso com o Atlas Device SDK, você deve utilizar uma das seguintes versões mínimas do SDK:
C++ SDK: versão a ser confirmada
Flutter SDK: v2.0.0 ou posterior
Kotlin SDK: v2.0.0 ou posterior
.NET SDK: v12.2.0 ou posterior
SDK Node.js. v12,9,0 ou posterior.
React Native SDK: v12.9.0 ou posterior
Swift SDK: v10.51.0 ou posterior
Este recurso não é suportado no Java SDK.
Você pode entrar em contato com o Suporte para saber mais sobre como ativar esse recurso em um aplicativo existente usando um SDK compatível.
Um campo mixed
pode conter qualquer tipo de esquema, exceto objetos incorporados, conjuntos ou qualquer contador compatível com o SDK. O App Services não impõe um tipo consistente entre documentos, de modo que dois documentos diferentes podem ter valores de tipos diferentes.
Os campos mistos podem armazenar arrays e dicionários de dados mistos. A sincronização os traduz para o MongoDB como arrays e objetos, respectivamente. Essas coleções de dados mistos também podem conter outras coleções de dados mistos, com uma profundidade máxima de 100 níveis. Você pode aproveitar essa flexibilidade para armazenar estruturas de dados complexas que, de outra forma, não se encaixariam em um esquema predefinido, como dados JSON variáveis ou documentos complexos do MongoDB.
Os campos mistos também podem representar relacionamentos. A sincronização converte esses relacionamentos para o MongoDB como um DBRef para preservar o nome do banco de dados, o nome da coleção e a chave primária do link.
{ "bsonType": "mixed" }
Número
Um number
configura genericamente algum tipo de número. Os esquemas BSON ampliam os números do JSON schema com tipos adicionais para definir números inteiros, flutuantes e decimais.
{ "bsonType": "number" | "int" | "long" | "double" | "decimal", "multipleOf": <number>, "maximum": <number>, "exclusiveMaximum": <boolean>, "minimum": <number>, "exclusiveMinimum": <boolean> }
Nome do campo | Descrição |
---|---|
| Um divisor inteiro do valor do campo. Por exemplo, se |
| O valor máximo do número. |
| Padrão: Se |
| O valor mínimo do número. |
| Padrão: Se |
Objeto
Um object
é um objeto estruturado com string
chaves que cada uma tem um valor digitado. Os Objeto de Realm representam Objeto de Realm e objetos incorporados em realms sincronizados, bem como os documentos que eles mapeiam no 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>", ...] } }
Nome do campo | Descrição |
---|---|
| Uma array de nomes de campos que devem ser incluídos no documento. |
| Um nome de tipo para o objeto. App Services usam esse valor para nomear o tipo do documento na GraphQL API. (GraphQL está obsoleto. Saiba mais) |
| Um objeto em que cada campo é mapeado para um campo no objeto pai por nome. O valor de cada campo é um documento de esquema que configura o valor do campo. |
| O número mínimo de campos permitidos no objeto. |
| O número máximo de campos permitidos no objeto. |
| Um objeto em que cada campo é uma string de expressão regular que mapeia para todos os campos no objeto pai correspondentes. O valor de cada campo é um documento de esquema que configura o valor dos campos correspondentes. |
| Padrão: Se Se o valor for um objeto de esquema, quaisquer campos adicionais deverão ser validados em relação ao esquema. |
| Especifique as dependências da propriedade e do esquema. |
Observação
Dicionários de modelo com o tipo de esquema de objetos
Para modelar dicionários, use o tipo de esquema object
com additionalProperties
definido como o tipo de objeto dos valores armazenados no dicionário.
ObjectId
Um objectId
é um identificador de 12bytes para objetos BSON . Os valores ObjectId são mais comumente usados como valores _id
exclusivos de documentos em uma collection do MongoDB ou objetos em um Realm sincronizado.
{ "bsonType": "objectId" }
String
Um string
é codificado por texto como uma série de caracteres. Os esquemas BSON string
usam o formato padrão de string do JSON schema.
{ "bsonType": "string", "maxLength": <integer>, "minLength": <integer>, "pattern": "<Regular Expression>" }
Nome do campo | Descrição |
---|---|
| O número máximo de caracteres na string. |
| O número mínimo de caracteres na string. |
| Uma string de expressão regular que deve corresponder ao valor da string. |
UUID
Um uuid
(Identificador Único Universal) é um identificador de objeto exclusivo de 16bytes. padronizado.
{ "bsonType": "uuid" }
Dados binários
Um binData
é um fragmento de dados binários não estruturados. Mapeia para o tipo de BSON binário. Sempre usa o subtipo 0.
{ "bsonType": "binData" }
Tipos de banco de dados Realm
Os tipos de bancos de dados Realm são específicos para Atlas Device SDK.
Para obter mais informações sobre os tipos específicos do SDK e como defini-los, consulte a documentação do SDK:
Contador
Um contador é um tipo numérico especial cujo valor pode ser incrementado ou diminuído. Ele mapeia para o tipo de número
long
no App Services.
{ "bsonType": "long" }
Os tipos de dados de contador são suportados apenas nos seguintes SDKs:
definir
Um conjunto é uma collection de valores únicos.
Um esquema de conjunto é um esquema array
onde uniqueItems
está configurado para true
.
{ "bsonType": "array", "uniqueItems": true, "items": { "bsonType": "long" } }
Dictionary
Um dicionário é uma coleção de chaves string
dinâmicas e exclusivas emparelhadas com valores de um determinado tipo. Um dicionário é funcionalmente um objeto ou documento sem nomes de campo predefinidos.
Um esquema de dicionário é um esquema object
em que properties
não está definido e o valor de additionalProperties
é um esquema para o tipo de valor do dicionário.
Dicionário de um tipo de BSON
Para armazenar um dicionário com valores de um tipo de BSON, configure additionalProperties
para o esquema do tipo.
{ "bsonType": "object", "additionalProperties": { "bsonType": "string" } } }
Dicionário de tipos de BSON mistos
Para armazenar um dicionário com valores mistos , configure additionalProperties
para true
:
{ "bsonType": "object", "additionalProperties": true } }
Alternativamente, você pode definir um esquema completo mixed
:
{ "bsonType": "object", "additionalProperties": { "bsonType": "mixed" } } }
Dicionário de objetos embarcados
Para armazenar um dicionário com valores de objeto embutidos, defina um esquema object
com o campo title
definido para o nome do tipo de objeto embutido:
{ "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" } } } }
Dados geoespaciais
Os dados geoespaciais descrevem pontos e outros dados na superfície da Terra. O App Services não tem tipos geoespaciais integrados. Em vez disso, você modela dados geográficos utilizando objetos GeoJSON padrão.
Ponto GeoJSON
Um ponto GeoJSON (GeoPoint) é um local único na superfície da Terra. O esquema do GeoPoint deve ser um campo type
obrigatório, do tipo
string
, que está sempre definido como "Point ".
Você também deve fornecer um campo coordinates
, que é uma array de double. A array coordinates
deve conter pelo menos 2 valores double e pode conter um terceiro:
O primeiro double é a longitude do ponto, entre -180 e 180.
O segundo é a latitude, entre -90 e 90.
O terceiro valor opcional representa a elevação/altitude do ponto, em metros. O Atlas ignora este valor ao executar consultas.
Observação
Você não pode definir uma array como obrigatória em um esquema do Device Sync, portanto o servidor de sincronização verifica se o campo de coordenadas está presente e atende aos requisitos.
Se você não estiver usando o Device Sync, poderá consultar seus dados geoespaciais com operadores geoespaciais regulares. No entanto, se você estiver usando o Atlas Device Sync, as seguintes regras também se aplicam ao objeto GeoPoint:
Deve ser do tipo
object
.Deve ser incorporado em outro tipo.
Valores adicionais são permitidos dentro da array
coordinates
, desde que sejam double.Propriedades adicionais no objeto GeoPoint também são permitidas.
A seguir está o esquema Device Sync de um objeto com uma propriedade GeoPoint incorporada chamada "localização":
{ "title": "MyObject", "properties": { "_id": { "bsonType": "objectId" }, "location": { "bsonType": "object", "required": [ "type" ], "properties": { "type": { "bsonType": "string", }, "coordinates": { "bsonType": "array", "items": { "bsonType": "double" } } } } } }
O seguinte bloco de código mostra um documento que segue o esquema. Ele tem um único objeto GeoPoint incorporado chamado "localização".
{ "_id": { "$oid": "65039d09fe4e46dddee31a3f" }, "location": { "type": "Point", "coordinates": [-122.4, 48.12, 23.0] } }