Menu Docs

Página inicial do DocsIniciar e gerenciar o MongoDBMongoDB Atlas

sqlGenerateSchema

Nesta página

  • Sintaxe
  • Parâmetros
  • Saída
  • Exemplos
  • Exemplo básico
  • Gerar e definir exemplo de esquema
  • Erros

O comando sqlGenerateSchema gera um esquema SQL para a coleção ou visualização especificada.

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. Umnamespace 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 nome de visualização (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
boleano

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.

← Formato de esquema SQL