Menu Docs
Página inicial do Docs
/
MongoDB Atlas
/ / /

Criar esquema

Nesta página

  • Criar esquema usando a UI do Atlas
  • No Atlas, acesse sua instância de banco de dados federado para seu projeto.
  • Navegue até a página Gerenciar esquemas SQL.
  • Crie um esquema.
  • Criar esquema usando mongosh
  • Sintaxe
  • Parâmetros
  • Saída
  • Exemplos
  • Exemplo básico
  • Gerar e definir exemplo de esquema
  • Errors

A geração de esquema acontece automaticamente quando você cria uma conexão de início rápido do Atlas SQL.

1
  1. Se ainda não estiver exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.

  2. Se ainda não estiver exibido, selecione seu projeto no menu Projects na barra de navegação.

  3. Na barra lateral, clique em Data Federation sob o título Services.

    A página Data Federation é exibida.

2

Na seção Federated Database Instances , clique em ícone à direita do esquema e selecione Manage SQL Schemas no menu suspenso.

3

Em uma coleção que tem um esquema vazio:

  1. Clique em .

  2. Clique Generate new schema from sample ou forneça seu próprio JSON.

  3. Clique em Save.

O comando sqlGenerateSchema gera um esquema Atlas SQL para as collections ou visualizações especificadas.

db.runCommand({
sqlGenerateSchema: 1,
sampleNamespaces: [<namespace>],
sampleSize: <int>,
setSchemas: true|false
})
Parâmetro
Tipo
Descrição
necessidade

sampleNamespaces

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, <database>.<collection>|<view>). Para gerar esquemas para todas as coleções em um banco de dados, especifique * da coleção ou visualizar o nome (ou seja <database>.*). Se omitido, gera esquemas para todas as coleções e visualizações no banco de dados atual.

Opcional

sampleSize

inteiro

Especifica o número de documentos a serem usados como amostra para criar o esquema. Se omitido, o padrão é 1000.

Opcional

setSchemas

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:

  • true para armazenar o esquema. Se um esquema já existir para a coleção ou visualização, substitua o esquema existente.

  • false para não armazenar o esquema.

Se omitido, o padrão é false.

Opcional

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

databaseName

string

Nome do banco de dados.

namespaces

Array de objetos

Nome e esquema gerado de cada coleção ou visualização.

namespaces.name

string

Nome da coleção ou visualização.

namespaces[n].schema

documento

Esquema da coleção ou visualização.

namespaces[n].schema.version

inteiro

Formatar versão do esquema. O valor é sempre 1.

namespaces[n].schema.jsonSchema

documento

Esquema JSON da coleção ou visualização. O esquema JSON pode conter os seguintes campos:

  • bsonType

  • properties

  • items

  • additionalProperties

  • required

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"

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.

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"
]
}
}
}
}
}
]
}
]
}

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"
]
}
}
}
}
]
}
]
}

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.

Voltar

Gerenciar esquemas