Crear 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, vaya a la instancia de base de datos federada para su 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.
El Se muestra lapágina Federación de datos.
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 |
|---|---|---|---|
| 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. | Opcional |
| entero | Especifica el número de documentos que se usarán como muestra para crear el esquema. Si se omite, el valor predeterminado 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. |
| matriz 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 de 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 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"
Ejemplos
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.
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 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" ] } } } } } ] } ] }
Ejemplo de generación y configuración de esquema
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" ] } } } } ] } ] }
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.