Para agentes de IA: um Ă­ndice de documentação estĂĄ disponĂ­vel em https://www.mongodb.com/pt-br/docs/llms.txt — as versĂ”es de markdown de todas as pĂĄginas estĂŁo disponĂ­veis anexando .md a qualquer caminho de URL.
Menu Docs

Comandos de esquema do Atlas Data Federation

No Atlas Data Federation, vocĂȘ gerencia o esquema que a interface SQL usa por meio de trĂȘs comandos: sqlGenerateSchema, sqlGetSchema e sqlSetSchema. VocĂȘ executa esses comandos do mongosh em uma instĂąncia do banco de dados federado ou executa as açÔes equivalentes na IU do Atlas. Esta pĂĄgina documenta esses comandos e seus equivalentes de IU.

O Atlas Data Federation amostra documentos de suas coleçÔes para gerar o esquema inicial. Para obter informaçÔes de segundo plano sobre o gerenciamento de esquemas e os outros tipos de implantação compatíveis, consulte Gerenciamento de esquemas.

Observação

The sqlGenerateSchema, sqlGetSchema, and sqlSetSchema commands and their Atlas UI equivalents apply only to the Atlas Data Federation deployment type. They don't apply to self-managed Enterprise Advanced (EA) deployments, which use the MongoDB SQL Schema Builder CLI, or to queries against a standard Atlas cluster that doesn't use Atlas Data Federation.

O comando sqlGenerateSchema gera um esquema de interface SQL para as coleçÔes ou visualizaçÔes especificadas. O Atlas Data Federation amostra documentos de cada namespace para derivar o esquema.

Ao usar o parĂąmetro sampleNamespaces, vocĂȘ deve executar o comando no banco de dados admin.

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

sampleNamespaces

array de strings

Specifies the comma-separated list of namespaces for which to generate schemas. A namespace includes the database name, a dot (.) separator, and the collection or view name (that is, <database>.<collection>|<view>). To generate schemas for all the collections in a database, specify * instead of the collection or view name (that is, <database>.*). If omitted, Atlas Data Federation generates schemas for all collections and views in the current database.

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 o esquema gerado para a coleção ou visualização deve ser armazenar. O valor pode ser um dos seguintes:

  • true para armazenar o esquema. Se um esquema jĂĄ existir para a coleção ou visualização, o Atlas Data Federation substituirĂĄ o esquema existente.

  • false para nĂŁo armazenar o esquema.

Se omitido, o padrĂŁo Ă© false.

Opcional

O comando retorna a seguinte saĂ­da se 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

JSON schema of the collection or view. The JSON schema can contain the following fields:

  • bsonType

  • properties

  • items

  • additionalProperties

  • required

To learn more about these fields, see JSON Schema Keywords.

Se vocĂȘ definir o esquema para a coleção ou visualização com a opção setSchemas, poderĂĄ verificar se o comando foi bem-sucedido executando o comando sqlGetSchema. O campo metadata.description do comando sqlGetSchema contĂ©m o seguinte valor:

"set using sqlGenerateSchema with setSchemas = true"

O comando retorna o seguinte erro se falhar:

"failedNamespaces": [
{
"namespace" : "<db.ns>",
"error" : "no documents found in sample namespace"
}
]

O Atlas Data Federation retorna esse erro se os namespaces especificados não existirem na configuração de armazenamento ou estiverem vazios. O Atlas Data Federation também retorna esse erro se não conseguir definir o esquema para um determinado namespace.

O comando sqlGetSchema recupera o esquema armazenado para a coleção ou visualização especificada.

db.getSiblingDB("<dbName>").runCommand({
sqlGetSchema: "<collection-name>|<view-name>"
})
ParĂąmetro
Tipo
Descrição
necessidade

<collection-name>

string

Nome da coleção para a qual recuperar o esquema. Forneça o nome da coleção ou o nome da exibição.

Condicional

<view-name>

string

Nome da visualização para a qual recuperar o esquema. Forneça o nome da visualização ou o nome da coleção.

Condicional

O comando retorna a seguinte saída se a coleção ou visualização não tiver um esquema:

{ "ok" : 1, "metadata" : { }, "schema" : { } }

O comando retorna uma saída semelhante à seguinte se a coleção ou visualização tiver um esquema:

{
"ok": 1,
"metadata": {
"description": "<description>"
},
"schema": {
"version": NumberLong(1),
"jsonSchema": { ... }
}
}

O campo metadata.description descreve como o esquema foi definido para a coleção. O valor pode ser um dos seguintes:

generated automatically by Atlas Data Federation

Indica que o esquema foi gerado automaticamente pelo Atlas Data Federation.

set using sqlGenerateSchema with setSchemas = true

Indicates that the schema was set by the sqlGenerateSchema command because the setSchema option was set to true.

set using sqlSetSchema

Indicates that the schema was set using the sqlSetSchema command.

O documento schema contém os seguintes campos:

ParĂąmetro
Tipo
Descrição

schema.version

inteiro

Formatar versĂŁo do esquema. O valor Ă© sempre 1.

schema.jsonSchema

documento

JSON schema of the collection or view. The JSON schema can contain the following fields:

  • bsonType

  • properties

  • items

To learn more about these fields, see JSON Schema Keywords.

O comando sqlSetSchema define ou remove o esquema para uma coleção ou visualização. O comando aplica o esquema que vocĂȘ fornece diretamente. O comando nĂŁo valida o esquema fornecido em relação aos dados na coleção.

db.getSiblingDB("<dbName>").runCommand({
sqlSetSchema: "<collection-name>|<view-name>",
schema: {
"version": 1,
"jsonSchema": <jsonSchema>
}
})
ParĂąmetro
Tipo
Descrição
necessidade

<collection-name>

string

Nome da coleção para a qual definir o esquema. Forneça um nome de coleção ou um nome de exibição.

Condicional

<view-name>

string

Nome da exibição para a qual definir o esquema. Forneça um nome de exibição ou um nome de coleção.

Condicional

schema

documento

A versĂŁo do formato do esquema e:

  • o JSON schema para a collection ou visualização

  • um documento vazio para remover o esquema da coleção ou visualização

VocĂȘ pode fornecer um Ășnico documento ou uma array de documentos no campo items . Ao recuperar o esquema, items mostra o formulĂĄrio que vocĂȘ usou para definir o esquema.

ObrigatĂłrio

O comando retorna a seguinte saĂ­da se for bem-sucedido:

{ "ok" : 1 }

VocĂȘ pode verificar se o comando foi bem-sucedido executando o comando sqlGetSchema . O campo metadata.description na resposta contĂ©m o seguinte valor:

"set using sqlSetSchema"

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 a seguir usam os comandos de esquema do Atlas Data Federation para gerar, recuperar, definir e remover o esquema da coleção anterior.

O comando a seguir 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 e o padrão é false.

use admin
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 denominada 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 e padrão para 1000. O comando define o esquema gerado como o esquema a ser usado para a coleção porque setSchemas é true.

use admin
db.runCommand({
sqlGenerateSchema: 1,
sampleNamespaces: ["sampleDB.egData"],
setSchemas: true
})

O comando a seguir recupera o esquema armazenado para a coleção egData:

db.getSiblingDB("sampleDB").runCommand({
sqlGetSchema: "egData"
})

O comando anterior retorna a seguinte saĂ­da. Para saber mais sobre os campos na saĂ­da, consulte SaĂ­da.

{
"ok" : 1,
"metadata" : {
"description" : "set using sqlGenerateSchema with setSchemas = true"
},
"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 seguinte comando sqlSetSchema define o esquema para a coleção egData :

db.getSiblingDB("sampleDB").runCommand({
sqlSetSchema : "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 anterior retorna a seguinte saĂ­da:

{ "ok" : 1 }

O comando sqlSetSchema a seguir remove o esquema da coleção egData passando um documento schema vazio:

db.getSiblingDB("sampleDB").runCommand({
sqlSetSchema: "egData",
schema: {}
})

O comando anterior retorna a seguinte saĂ­da:

{ "ok" : 1 }

VocĂȘ pode executar as mesmas açÔes de esquema na IU do Atlas na pĂĄgina Manage SQL Schemas. A IU amostra documentos para gerar esquemas, o mesmo que o comando sqlGenerateSchema.

Quando vocĂȘ cria uma conexĂŁo de inĂ­cio rĂĄpido, o Atlas Data Federation gera o esquema automaticamente. Para criar um esquema manualmente, use o seguinte procedimento.

1
  1. Se ainda não tiver sido 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.

Regenerate a schema any time the shape of your underlying data changes, such as when you add fields or change field types, so that your SQL queries reflect the current data. To keep schemas current automatically instead, see Schedule Schema Updates.

1
  1. Se ainda não tiver sido 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 jå tem um esquema:

  1. Clique em .

  2. Clique em Generate new schema from sample.

  3. Clique em Save.

1
  1. Se ainda não tiver sido 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.

Nesta pĂĄgina, vocĂȘ pode visualizar todos os esquemas existentes. Para visualizar um esquema especĂ­fico no formato JSON, clique em .

1
  1. Se ainda não tiver sido 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
  1. Ao lado de um esquema, clique em .

  2. Edite o JSON.

  3. Clique em Save.

1
  1. Se ainda não tiver sido 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.

Nesta pĂĄgina, vocĂȘ pode visualizar todos os esquemas existentes.

3
  1. Para o esquema que vocĂȘ deseja excluir, clique em .

  2. Clique em Clear....

  3. Clique em Clear schema para confirmar.

1
  1. Se ainda não tiver sido 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.

Nesta pĂĄgina, vocĂȘ pode visualizar todos os esquemas existentes.

3
  1. Clique no Ă­cone no canto superior direito.

  2. Clique em Clear all schemas.

  3. Clique em Clear all schemas novamente para confirmar.

As atualizaçÔes de esquema agendadas ajudam a manter a precisão do esquema ao longo do tempo. As atualizaçÔes de esquema agendadas amostram cada namespace e mesclam o novo esquema com o existente. Por exemplo, as atualizaçÔes de esquema agendadas permitem que o Atlas Data Federation colete automaticamente novos campos adicionados às coleçÔes.

1
  1. Se ainda não tiver sido 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
  1. Clique em Configure schema update schedule.

  2. Selecione uma frequĂȘncia.

  3. Clique em Save.