Crea un esquema usando la Interfaz de Usuario de Atlas
La generación del esquema se produce automáticamente cuando se crea una conexión de inicio rápido de MongoSQL.
En Atlas, ve a tu instancia federada de base de datos para tu proyecto.
Si aún no se muestra, seleccione la organización que contiene su proyecto en la Organizations menú en la barra de navegación.
Si aún no se muestra, seleccione su proyecto en el menú Projects de la barra de navegación.
En la barra lateral, haz clic en Data Federation en la sección Services.
La Se muestra la página Data Federation.
Crear esquema usando mongosh
El comando sqlGenerateSchema genera un esquema MongoSQL para las colecciones o vistas especificadas.
Sintaxis
db.runCommand({ sqlGenerateSchema: 1, sampleNamespaces: [<namespace>], sampleSize: <int>, setSchemas: true|false })
Parámetros
Parameter | Tipo | Descripción | Necesidad |
|---|---|---|---|
| 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. | Opcional |
| entero | Especifica el número de documentos a utilizar como muestra para crear el esquema. Si se omite, el valor por defecto es | Opcional |
| 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:
Si se omite, es por defecto | Opcional |
Salida
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 |
|---|---|---|
| string | Nombre de la base de datos. |
| Arreglo de objetos | Nombre y esquema generado de cada colección o vista. |
| string | Nombre de la colección o vista. |
| Documento | Esquema de la colección o vista. |
| entero | Versión del formato del esquema. El valor siempre es 1. |
| Documento | JSON esquema de la colección o vista. El JSON esquema puede contener los siguientes campos:
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"
Ejemplos
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.
Ejemplo básico
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" ] } } } } } ] } ] }
Ejemplo de generación y configuración de esquema
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" ] } } } } ] } ] }
Errors
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.