Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
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.

La Se muestra la página Data Federation.

2

Desde la sección Federated Database Instances, haz clic en el icono a la derecha del esquema, y luego selecciona Manage SQL Schemas del menú desplegable.

3

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

  1. Haz clic en el .

  2. Haz clic en Generate new schema from sample, o proporciona tu 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

Arreglo 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 a utilizar como muestra para crear el esquema. Si se omite, el valor por defecto 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, sobrescribe el esquema existente.

  • false 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

Arreglo 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 del 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 se establece el esquema para la colección o vista mediante la opción setSchemas, se puede verificar que el comando se haya realizado correctamente ejecutando el comando sqlGetSchema. El comando sqlGetSchema metadata.description debe contener el siguiente valor:

"set using sqlGenerateSchema with setSchemas = true"

Considera 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 en el resultado, consulte Resultado.

{
"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 llamada 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 y es por defecto 1000. El comando establece el esquema generado como el esquema a utilizar para la colección porque la opción setSchemas está configurada 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 en el resultado, consulte Resultado.

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