Docs Menu
Docs Home

Crear esquema

La generación del esquema se produce automáticamente cuando se crea una conexión de inicio rápido de MongoSQL.

1
  1. Si aún no se muestra, seleccione la organización que contiene su proyecto en la Organizations Menú en la barra de navegación.

  2. Si aún no se muestra, seleccione su proyecto en el menú Projects de la barra de navegación.

  3. En la barra lateral, haz clic en Data Federation en la sección Services.

El Se muestra lapágina Federación de datos.

2

Desde la Federated Database Instances sección, haga clic en el ícono a la derecha del esquema y luego seleccione Manage SQL Schemas en el menú desplegable.

3

En una colección que tiene un esquema vacío:

  1. Haga clic en el.

  2. Haga clic en Generate new schema from sample o proporcione su propio JSON.

  3. Haga clic en Save.

El comando sqlGenerateSchema genera un esquema MongoSQL para las colecciones o vistas especificadas.

db.runCommand({
sqlGenerateSchema: 1,
sampleNamespaces: [<namespace>],
sampleSize: <int>,
setSchemas: true|false
})
Parameter
Tipo
Descripción
Necesidad

sampleNamespaces

matriz de cadenas

Especifica la lista de espacios de nombres, separados por comas, para los que se generarán esquemas. Un espacio de nombres incluye el nombre de la base de datos, un punto (.) como separador y el nombre de la colección o vista (p. <database>.<collection>|<view> ej.,). Para generar esquemas para todas las colecciones de una base de datos, especifique * en lugar del nombre de la colección o<database>.* vista (p. ej.,). Si se omite, se generan esquemas para todas las colecciones y vistas de la base de datos actual.

Opcional

sampleSize

entero

Especifica el número de documentos que se usarán como muestra para crear el esquema. Si se omite, el valor predeterminado es 1000.

Opcional

setSchemas

booleano

Especifica si se debe almacenar o no el esquema generado para la colección o vista. El valor puede ser uno de los siguientes:

  • true Para almacenar el esquema. Si ya existe un esquema para la colección o vista, sobrescríbalo.

  • false para no almacenar el esquema.

Si se omite, es por defecto false.

Opcional

El comando devuelve lo siguiente si el comando tiene éxito.

{
"ok" : 1,
"schemas" : [
{
"databaseName" : "<database-name>",
"namespaces" : [
{
"name" : "<collection-name>",
"schema" : {
"version" : NumberLong(1),
"jsonSchema" : {}
}
}
]
},
...
]
}

El objeto schemas contiene los siguientes campos.

Parameter
Tipo
Descripción

databaseName

string

Nombre de la base de datos.

namespaces

matriz de objetos

Nombre y esquema generado de cada colección o vista.

namespaces.name

string

Nombre de la colección o vista.

namespaces[n].schema

Documento

Esquema de la colección o vista.

namespaces[n].schema.version

entero

Versión de formato del esquema. El valor siempre es 1.

namespaces[n].schema.jsonSchema

Documento

JSON esquema de la colección o vista. El JSON esquema puede contener los siguientes campos:

  • bsonType

  • properties

  • items

  • additionalProperties

  • required

Para obtener más información sobre estos campos, consulte Palabras clave del esquema JSON.

Si configura el esquema de la colección o vista con la opción setSchemas, puede verificar que el comando se haya ejecutado correctamente ejecutando el comando sqlGetSchema. El comando sqlGetSchema metadata.description debe contener el siguiente valor:

"set using sqlGenerateSchema with setSchemas = true"

Considere una colección llamada egData en una base de datos llamada sampleDB con los siguientes 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}

Los ejemplos a continuación utilizan el comando sqlGenerateSchema para generar un esquema para la colección anterior.

El siguiente comando genera un esquema para la colección llamada sampleDB.egData en la configuración de almacenamiento. El comando utiliza dos documentos seleccionados al azar de la colección para crear el esquema porque el sampleSize es 2. El comando no establece el esquema para la colección porque la opción setSchemas no está especificada en el comando y por defecto es false.

db.runCommand({
sqlGenerateSchema: 1,
sampleNamespaces: ["sampleDB.egData"],
sampleSize: 2
})

El comando anterior devuelve la siguiente salida. Para obtener más información sobre los campos de la salida, consulte Salida.

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

El siguiente comando genera un esquema para la colección denominada sampleDB.egData en la configuración de almacenamiento. El comando utiliza hasta 1000 documentos de la colección para crear el esquema, ya que la opción sampleSize no se especifica con el comando y su valor predeterminado es 1000. El comando establece el esquema generado como el esquema que se usará para la colección, ya que la opción setSchemas está establecida en true.

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

El comando anterior devuelve la siguiente salida. Para obtener más información sobre los campos de la salida, consulte Salida.

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

El comando devuelve el siguiente error si el comando falla:

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

El error anterior se presenta si los namespaces especificados no existen en la configuración de almacenamiento o están vacíos. Este error también se presenta si no se pudo establecer el esquema para un namespace específico.

En esta página