Criar esquema
Nesta página
Criar esquema usando a UI do Atlas
A geração de esquema acontece automaticamente quando você cria uma conexão de início rápido do Atlas SQL.
No Atlas, acesse sua instância de banco de dados federado para seu projeto.
Se ainda não estiver exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.
Se ainda não estiver exibido, selecione seu projeto no menu Projects na barra de navegação.
Na barra lateral, clique em Data Federation sob o título Services.
A página Data Federation é exibida.
Criar esquema usando mongosh
O comando sqlGenerateSchema
gera um esquema Atlas SQL para as collections ou visualizações especificadas.
Sintaxe
db.runCommand({ sqlGenerateSchema: 1, sampleNamespaces: [<namespace>], sampleSize: <int>, setSchemas: true|false })
Parâmetros
Parâmetro | Tipo | Descrição | necessidade |
---|---|---|---|
| array de strings | Especifica a lista separada por vírgula de namespaces para os quais gerar esquemas. Um namespace inclui o nome do banco de dados, um separador de ponto (.) e a coleção ou nome de visualização (ou seja, | Opcional |
| inteiro | Especifica o número de documentos a serem usados como amostra para criar o esquema. Se omitido, o padrão é | Opcional |
| booleano | Especifica se deseja ou não armazenar o esquema gerado para a coleção ou visualização. O valor pode ser um dos seguintes:
Se omitido, o padrão é | Opcional |
Saída
O comando retornará o seguinte se o comando for bem-sucedido.
{ "ok" : 1, "schemas" : [ { "databaseName" : "<database-name>", "namespaces" : [ { "name" : "<collection-name>", "schema" : { "version" : NumberLong(1), "jsonSchema" : {} } } ] }, ... ] }
O objeto schemas
contém os seguintes campos.
Parâmetro | Tipo | Descrição |
---|---|---|
| string | Nome do banco de dados. |
| Array de objetos | Nome e esquema gerado de cada coleção ou visualização. |
| string | Nome da coleção ou visualização. |
| documento | Esquema da coleção ou visualização. |
| inteiro | Formatar versão do esquema. O valor é sempre 1. |
| documento | Esquema JSON da coleção ou visualização. O esquema JSON pode conter os seguintes campos:
Para saber mais sobre esses campos, consulte Palavras-chave do JSON schema. |
Se você define o esquema da coleção ou visualização usando a opção setSchemas
, poderá verificar se o comando foi bem-sucedido executando o comando sqlGetSchema
. O comando sqlGetSchema
metadata.description
deve conter o seguinte valor:
"set using sqlGenerateSchema with setSchemas = true"
Exemplos
Considere uma coleção denominada egData
em um banco de dados denominada sampleDB
com os seguintes documentos:
{"a": {"b": {"c": [1, 2, 3]}}, "s": 1} {"a": {"b": {"c": [4, 5, 6]}}, "s": 2} {"a": {"b": [7, 8, 9]}, "s": 3} {"a": {"b": {"c": []}}, "s": 4} {"a": {"b": {"c": "hello"}}, "s": 5} {"a": {"b": {"c": {"d": 1}}}, "s": 6} {"a": {"b": {"c": null}}} {"s": 7}
Os exemplos abaixo usam o comando sqlGenerateSchema
para gerar um esquema para a coleção acima.
Exemplo básico
O seguinte comando gera um esquema para a coleção denominada sampleDB.egData
na configuração de armazenamento. O comando utiliza dois documentos selecionados aleatoriamente da coleção para criar o esquema, pois o sampleSize
é 2
. O comando não define o esquema para a coleção porque a opção setSchemas
não é especificada com o comando e o padrão é false
.
db.runCommand({ sqlGenerateSchema: 1, sampleNamespaces: ["sampleDB.egData"], sampleSize: 2 })
O comando anterior retorna a seguinte saída. Para saber mais sobre os campos na saída, consulte Saída.
{ "ok" : 1, "schemas" : [ { "databaseName" : "sampleDB", "namespaces" : [ { "name" : "egData", "schema" : { "version" : NumberLong(1), "jsonSchema" : { "bsonType" : [ "object" ], "properties" : { "a" : { "bsonType" : [ "object" ], "properties" : { "b" : { "bsonType" : [ "object" ], "properties" : { "c" : { "bsonType" : [ "array" ], "items" : { "bsonType" : [ "int" ] } } } } } }, "s" : { "bsonType" : [ "int" ] } } } } } ] } ] }
Gerar e definir exemplo de esquema
O comando a seguir gera um esquema para a coleção chamada sampleDB.egData
na configuração de armazenamento. O comando utiliza até 1000 documentos na coleção para criar o esquema, pois a opção sampleSize
não é especificada com o comando e padrão para 1000
. O comando define o esquema gerado como o esquema a ser usado para a coleção porque a opção setSchemas
está definida como true
.
db.runCommand({ sqlGenerateSchema: 1, sampleNamespaces: ["sampleDB.egData"], setSchemas: true })
O comando anterior retorna a seguinte saída. Para saber mais sobre os campos na saída, consulte Saída.
{ "ok" : 1, "schemas" : [ { "databaseName" : "sampleDB", "namespaces" : [ { "name" : "egData", "schema" : { "version" : NumberLong(1), "jsonSchema" : { "bsonType" : [ "object" ], "properties" : { "a" : { "bsonType" : [ "object" ], "properties" : { "b" : { "bsonType" : [ "object", "array" ], "properties" : { "c" : { "bsonType" : [ "array", "string", "object", "null" ], "properties" : { "d" : { "bsonType" : [ "int" ] } }, "items" : { "bsonType" : [ "int" ] } } }, "items" : { "bsonType" : [ "int" ] } } } }, "s" : { "bsonType" : [ "int", "object" ] } } } } ] } ] }
Errors
O comando retorna o seguinte erro se o comando falhar:
"failedNamespaces": [ { "namespace" : "<db.ns>", "error" : "no documents found in sample namespace" } ]
O erro acima será retornado se os namespaces especificados não existirem na configuração de armazenamento ou estiverem vazios. Este erro também será retornado se o esquema não puder ser definido para um determinado namespace.