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
/ /

mongodrdl

Nota

El conector de MongoDB para BI y las utilidades asociadas son compatibles con todas las versiones actualmente soportadas del servidor MongoDB.

mongodrdl es una herramienta de gestión de esquemas relacionales para el MongoDB Connector for BI. El binario mongodrdl puede:

  • Produce a schema según el contenido de una o varias colecciones de MongoDB y escribirlos en .drdl archivos utilizados por mongosqld.

  • Upload al esquema de un archivo .drdl en la implementación de MongoDB del que el BI Connector está leyendo.

  • Download esquemas almacenados de su implementación de MongoDB.

  • Delete esquemas almacenados de su implementación de MongoDB.

  • Name esquemas almacenados en su implementación de MongoDB para una gestión más fácil.

Puede editar manualmente un archivo .drdl para personalizar el esquema del Conector de BI. Para obtener más información sobre el formato .drdl y la edición manual de archivos .drdl, consulta Cargar un esquema a partir de un archivo DRDL.

Para obtener más información sobre todas las opciones de administración de esquemas de BI Connector, consulte Asignar esquemas relacionales a MongoDB.

Importante

Para aplicar cualquier cambio que realice en sus archivos DRDL, debe mongosqld reiniciar.

mongodrdl utiliza la siguiente sintaxis:

mongodrdl [<command>] [<options...>]

Novedades en la versión 2.6.

La versión mínima de TLS por defecto es 1.1 para conexiones salientes de mongodrdl a MongoDB.

Puede ajustar esta configuración con la --minimumTLSVersion opción.

Novedad en la versión 2.11.

El comportamiento de mongodrdl está determinado por uno de los siguientes comandos. Si no se especifica un comando, mongodrdl muestrea el namespace especificado.

sample

Muestra los espacios de nombres especificados por el --db, --collection opcional y otras opciones de línea de comando para generar un .drdl archivo. El comando sample resume todo el comportamiento mongodrdl anterior a la versión 2.11.

mongodrdl sample --db <db-name> --collection <collection-name> --out <filename>.drdl
list-schema-ids

Enumera la representación de cadena del ObjectId de cada esquema almacenado y la fecha en que se creó.

list-schema-ids requiere la siguiente opción:

Nombre
Descripción

Requerido. Especifica la base de datos donde se almacena la información del esquema.

Por ejemplo, el siguiente comando lista los ids de los esquemas en la base de datos schemas:

mongodrdl list-schema-ids --schemaSource schemas

La salida es similar a la siguiente:

5d72ad695c23a9e3e26e3c85 2019-09-06T15:03:05.556Z
5d72adea5c23a9e44882a1ad 2019-09-06T15:05:14.349Z
list-schema-names

Enumera el nombre y la representación en string del ObjectId para cada esquema almacenado que tenga un nombre.

Los esquemas almacenados no tienen nombre de forma predeterminada. Puede hacer referencia a un esquema con nombre usando la --name opción con download delete los comandos y. Use el comando para nombrar o renombrar un name-schema esquema.

list-schema-names requiere la siguiente opción:

Nombre
Descripción

Requerido. Especifica la base de datos donde se almacena la información del esquema.

Por ejemplo, el siguiente comando devuelve el nombre y el ObjectId de cada esquema nombrado en la base de datos schemas:

mongodrdl list-schema-names --schemaSource schemas

La salida es similar a la siguiente:

movies 5d72ad695c23a9e3e26e3c85
theaters 5d72adea5c23a9e44882a1ad
upload

Carga el esquema desde el archivo especificado .drdl a la base de datos especificada por la opción --schemaSource. Los esquemas se suben a la colección schemas.

upload requiere las siguientes opciones:

Nombre
Descripción

Requerido. Especifica la base de datos donde se almacena la información del esquema.

--drdl

Obligatorio. Ruta al .drdl archivo para cargar.

Por ejemplo, el siguiente comando carga el esquema en el archivo movies.drdl a la base de datos schemas:

mongodrdl upload --schemaSource schemas --drdl ./movies.drdl

Se devuelve la representación en string del ObjectId del esquema subido:

5d793f3f6a26a3ce66c304ea

El siguiente paso es almacenar el esquema bajo un nombre que usted proporcione, utilizando el comando name-schema:

mongodrdl name-schema --name movies --schemaSource schemas --schema 5d793f3f6a26a3ce66c304ea

Para usar el esquema recién cargado que recibió un nombre específico, reinicia mongosqld con la base de datos del esquema especificada por la opción --schemaSource y con el nombre del esquema especificado con --schemaName:

mongosqld --schemaSource <schema-db> --schemaName movies

Importante

Si carga un esquema personalizado, debe almacenarlo con su nombre especificado name-schema () y luego especificar este nombre en mongosqld --schemaNamecon. Si no almacena el nombre del esquema al cargarlo, el nombre predeterminado defaultSchema será. Si el nombre del esquema no existe, se generará un error de similar al siguiente: Esquema de MongoDB aún no disponible. Error al inicializar mongosqld el esquema: no se encontró ningún esquema para el nombre.

download

Descarga un esquema especificado por su nombre o representación en cadena de la ObjectId y la imprime en la consola.

download acepta las siguientes opciones:

Nombre
Descripción

Requerido. Especifica la base de datos donde se almacena la información del esquema.

--name

El nombre del esquema. Para aprender más sobre el nombramiento de esquemas, consulte el comando name-schema.

Requerido si --schema no está especificado.

--schema

La representación de cadena del ObjectId del esquema.

Requerido si --name no está especificado.

Por ejemplo, el siguiente comando imprime el esquema movies en la consola:

mongodrdl download --schemaSource schemas --name movies

Para almacenar el esquema en un archivo .drdl, dirija la salida al archivo .drdl deseado:

mongodrdl download --schemaSource schemas --name movies > ./movies.drdl
delete

Elimina un esquema especificado por su nombre o la representación en string de la ObjectId.

delete acepta las siguientes opciones:

Nombre
Descripción

Requerido. Especifica la base de datos donde se almacena la información del esquema.

--name

El nombre del esquema. Para aprender más sobre el nombramiento de esquemas, consulte el comando name-schema.

Requerido si --schema no está especificado.

--schema

La representación de cadena del ObjectId del esquema.

Requerido si --name no está especificado.

Por ejemplo, el siguiente comando borra el esquema con id 5d7941dc6a26a3d0fc397284 en la base de datos schemas:

mongodrdl delete --schemaSource schemas --schema 5d7941dc6a26a3d0fc397284
name-schema

Crea un nuevo nombre para un esquema o actualiza el nombre existente de un esquema.

Los esquemas almacenados no tienen nombre de forma predeterminada. Puede hacer referencia a un esquema con nombre usando la --name opción con download delete los comandos y. Use el comando para nombrar o renombrar un name-schema esquema.

name-schema requiere las siguientes opciones:

Nombre
Descripción

Requerido. Especifica la base de datos donde se almacena la información del esquema.

Obligatorio. El nuevo nombre del esquema.

Obligatorio La representación de string del ObjectId del esquema.

Por ejemplo, el siguiente comando nombra el esquema 5d72adea5c23a9e44882a1ad en la base de datos schemas como movies:

mongodrdl name-schema --name movies --schemaSource schemas --schema 5d72adea5c23a9e44882a1ad
--help

Devuelve información sobre las opciones y el uso mongodrdl de.

--version

Devuelve el número de versión de la mongodrdl.

--verbose <level>, -v <level>

Especifica que mongodrdl debe proporcionar una salida de registro más detallada. Inclúyelo varias veces para mayor nivel de verbosidad (p. ej. -vvvvv), o especifica un valor numérico (p. ej. --verbose=5).

--quiet

Oculta toda la salida del registro.

--uri <mongodb-uri>

Novedad en la versión 2.12.

Cadena de conexión URI de MongoDB.

Importante

Las siguientes opciones de línea de comandos no pueden utilizarse junto con la opción --uri:

En su lugar, especifica estas opciones como parte de tu cadena de conexión --uri.

--host <hostname><:port>, -h <hostname><:port>

Por defecto: localhost:27017

Especifica un hostname resolvible para el mongod al que conectar. Por defecto, el mongodrdl intenta conectarse a una instancia de MongoDB que se ejecuta en localhost en el puerto número 27017.

Para conectarse a un set de réplicas, especifica el replSetName y una lista de nodos iniciales de los miembros del set, tal como se muestra a continuación:

<replSetName>/<hostname1><:port>,<hostname2><:port>,<...>

Siempre puede conectarse directamente a una sola instancia de MongoDB especificando directamente el host y el número de puerto.

--port <port>

Por defecto: 27017

Especifica el puerto TCP en el que la instancia de MongoDB escucha las conexiones de los clientes.

--db <database>, -d <database>

Especifica una base de datos a partir de la cual generar un archivo de esquema .drdl.

--collection <collection>, -c <collection>

Especifica una colección de la cual generar un archivo de esquema .drdl. Si no especifica una colección, esta opción utilizará todas las colecciones en la base de datos o instancia especificada.

--customFilterField <name>, -f <name>

Especifica el nombre del campo que se va a añadir para un filtro personalizado de MongoDB. Consulta Filtros personalizados para obtener más detalles.

--out <path>, -o <path>

Predeterminado: Salida estándar.

Especifica la ruta donde mongodrdl guardará el archivo del esquema. Para enviar el esquema a la salida estándar, especifica “-” en lugar de una ruta.

--sampleSize <size>, -s <size>

Por defecto: 1000

Especifica la cantidad de documentos que se deben muestrear al generar el esquema de la colección.

--uuidSubtype3Encoding <old|csharp|java>, -b <old|csharp|java>

Especifique la codificación utilizada para generar el subtip Binario UUID 3. Elija uno de los siguientes valores:

  • oldReprensentación anterior del subtipo binario BSON

  • csharp: La representación UUID heredada de C#/.NET

  • java:La representación UUID heredada de Java

--preJoined

Generar tablas desglosadas incluyendo columnas ascendentes, lo que da como resultado una tabla "preunida".

--schema <db-id>

Novedad en la versión 2.11.

Obligatorio. Especifica la representación en string del ObjectId del esquema.

--name <db-name>

Novedad en la versión 2.11.

Especifica el nombre del esquema.

Importante

Si carga un esquema personalizado, debe almacenarlo con su nombre especificado name-schema () y luego especificar este nombre en mongosqld --schemaNamecon. Si no almacena el nombre del esquema al cargarlo, el nombre predeterminado defaultSchema será. Si el nombre del esquema no existe, se generará un error de similar al siguiente: Esquema de MongoDB aún no disponible. Error al inicializar mongosqld el esquema: no se encontró ningún esquema para el nombre.

--schemaSource <db-name>

Novedad en la versión 2.11.

Especifica la base de datos donde se almacena la información del esquema. Esta opción no es utilizada por el comando sample.

--ssl

Por defecto: False

Instruye a mongodrdl a usar TLS/SSL al conectarse a una instancia de MongoDB.

--sslCAFile <filename>

Especifica el archivo .pem de la instancia de MongoDB que contiene la cadena de certificados raíz de la autoridad certificadora. Especifique el nombre del archivo .pem utilizando rutas relativas o absolutas.

Advertencia

Para las conexiones SSL (--ssl) a mongod y mongos, si el mongodrdl se ejecuta sin el --sslCAFile, mongodrdl no intentará validar los certificados del servidor. Esto crea una vulnerabilidad frente a la caducidad de los certificados mongod y mongos, así como ante procesos externos que se hacen pasar por instancias válidas de mongod o mongos. Asegúrate de siempre especificar el archivo CA para validar los certificados del servidor en casos donde exista la posibilidad de intrusión.

--sslPEMKeyFile <filename>

Especifica el archivo .pem que contiene tanto el certificado como la clave TLS/SSL para que mongosqld use al conectarse a MongoDB. Puede especificar el nombre del archivo .pem utilizando una ruta relativa o absoluta.

Esta opción es necesaria al usar la opción --ssl para conectarse a mongod o mongos que tengan habilitado CAFile sin allowConnectionsWithoutCertificates.

--sslPEMKeyPassword <password>

Especifica la ruta a un archivo que contiene el certificado y la clave privada para conectarse a MongoDB.

--sslCRLFile <filename>

Especifica el archivo .pem que contiene la Lista de revocación de certificados. Especifica el nombre del archivo .pem con rutas relativas o absolutas.

--sslAllowInvalidCertificates

Permite que la instancia de MongoDB presente un certificado SSL/TLS de servidor inválido. Al utilizar la configuración allowInvalidCertificates, MongoDB registra el uso del certificado no válido como una advertencia.

--sslAllowInvalidHostnames

Desactiva la validación de los nombres de host en los certificados TLS/SSL. Permite que mongodrdl se conecte a instancias de MongoDB si el nombre de host de sus certificados no coincide con el nombre de host especificado.

--sslFIPSMode

Indica al mongodrdl que utilice el modo FIPS de la librería OpenSSL instalada. Su sistema debe contar con una librería OpenSSL compatible con FIPS para utilizar la opción --sslFIPSMode.

--minimumTLSVersion <TLS1_0|TLS1_1|TLS1_2>

Por defecto: TLS1_1

Especifica la versión mínima requerida de TLS para que mongodrdl se conecte a una instancia de mongod o mongos. El valor por defecto TLS1_1 corresponde a la versión TLS 1.1.

--username <username>, -u <username>

Especifica un nombre de usuario con el cual autenticarse en una base de datos MongoDB que requiere autenticación. Utilízalo en conjunto con las opciones --password y --authenticationDatabase.

--password <password>, -p <password>

Especifica una contraseña con la que autenticarse en una base de datos de MongoDB que requiere autenticación. Utilízalo en conjunto con las opciones --username y --authenticationDatabase.

--authenticationDatabase <dbname>

Especifica la base de datos en la que se crea el usuario. Consulta la base de datos de autenticación.

--authenticationMechanism <name>

Por defecto: SCRAM-SHA-1

Especifica el mecanismo de autenticación que la instancia de mongodrdl usa para autenticarse en mongod o mongos.

Valor
Descripción

RFC 5802 mecanismo estándar de autenticación de respuesta a desafío basado en sal (Salted Challenge Response Authentication Mechanism) utilizando la función hash SHA1.

Nuevo en la versión 2.6: RFC 7677 mecanismo estándar de autenticación por desafío con salt (SCRAM) mediante la función de hash SHA2.

PLAIN (SASL LDAP)

Autenticación externa mediante LDAP. También puede utilizar PLAIN para autenticar a los usuarios de base de datos. PLAIN transmite las contraseñas en texto sin cifrar. Este mecanismo está disponible solo en MongoDB Enterprise.

GSSAPI (Kerberos)

Autenticación externa utilizando Kerberos. Este mecanismo está disponible solo en MongoDB Enterprise.

--gssapiServiceName <service-name>

Por defecto: MongoDB

Nombre del servicio a utilizar durante la autenticación mediante GSSAPI/Kerberos.

--gssapiHostName <hostname>

por defecto: dirección del servidor remoto

Nombre de host que se utilizará para la autenticación usando GSSAPI/Kerberos.

BI Connector utiliza una pipeline de agregación de MongoDB para realizar consultas a una base de datos MongoDB. Puedes añadir un campo especial a tu esquema para pasar una string del query de MongoDB $match personalizada a tu instancia de MongoDB.

Usa la opción --customFilterField con mongodrdl para nombrar un campo de filtro personalizado. Este campo pasa una etapa nativa de MongoDB $match para usar como la primera etapa del pipeline de agregación, que filtra cualquier resultado devuelto de MongoDB. El conector BI aplica esta etapa antes de que cualquier etapa adicional se aplique desde SQL.

La query puede hacer referencia a cualquier campo en la colección, incluso si los campos no están expuestos en el esquema relacional.

Para un ejemplo de uso de filtros personalizados, consulta Ejemplo de filtro personalizado.

Dados documentos de la siguiente forma en la colección abc en la base de datos test:

{
"_id": ObjectId(),
"close": 7.45,
"detail": { "a": 2, "b": 3 }
}

Ejecute para generar un esquema basado en esta mongodrdl colección:

mongodrdl -d test -c abc -o schema.drdl

El archivo de esquema generado (schema.drdl) es similar al siguiente:

schema:
- db: test
tables:
- table: abc
collection: abc
pipeline: []
columns:
- Name: _id
MongoType: bson.ObjectId
SqlName: _id
SqlType: varchar
- Name: close
MongoType: float64
SqlName: close
SqlType: numeric
- Name: detail.a
MongoType: float64
SqlName: detail.a
SqlType: numeric
- Name: detail.b
MongoType: float64
SqlName: detail.b
SqlType: numeric

Para utilizar este campo, especifica la bandera --customFilterField con el nombre que desees que tenga este campo:

mongodrdl [ other options ] --customFilterField _MONGOFILTER -o schema.drdl

Su archivo DRDL schema.drdl incluirá el siguiente campo en cada tabla generada:

- Name: _MONGOFILTER
MongoType: mongo.Filter
SqlName: _MONGOFILTER
SqlType: varchar

Para agregar la etapa de consulta especial de MongoDB a su SQL estándar, utilice la siguiente sintaxis SQL:

SELECT <normal>
FROM <tablename>
WHERE <normal conditions> AND
_MONGOFILTER='{ <json string that represents query to use> }'
SELECT name,age
FROM users
WHERE active='t' AND
_MONGOFILTER='{"addr":{"$elemMatch":{"city":"Springfield","state":"CA"}}}'

El BI Connector traducirá el SQL anterior a la siguiente expresión de agregación de MongoDB:

db.users.aggregate([
{$match:{"addr":{"$elemMatch":{"city":"Springfield","state":"CA"}}},
{$match:{"active":true}},
{$project:{"name":1, "age":1}}
]);

Puede usar este filtro personalizado en cualquier herramienta de inteligencia empresarial filtrando por su campo especial y proporcionando el valor correspondiente como una cadena entre comillas simples que representa un JSON válido. Todas las comillas dentro del JSON deben ser dobles.

Si su servidor MongoDB está ejecutándose con autenticación habilitada, debe especificar un nombre de usuario, contraseña y base de datos de autenticación como opciones para su comando mongodrdl.

Para crear un archivo .drdl desde una instancia de mongod con autenticación habilitada, use el siguiente formato de comando:

mongodrdl --host myhost.example.net:27017 \
--username dbUser \
--password myPassword \
--db reports \
--collection FY2017 \
--authenticationDatabase admin \
--out schema.drdl

MongoDB Atlas es un servicio en la nube para ejecutar, supervisar y mantener implementaciones de MongoDB, incluida la provisionamineto de servidores dedicados para instancias de MongoDB.

Nota

MongoDB Atlas ofrece un Conector de BI alojado. No se puede usar la salida del archivo .drdl del comando mongodrdl en el Conector de BI alojado en Atlas. El Conector de BI de Atlas requiere un muestreo con un intervalo de actualización y un tamaño de muestra ajustables.

Para obtener más información sobre el conector de BI alojado en Atlas, consulte Conectarse a un clúster a través del conector de BI.

Si estás ejecutando el BI Connector localmente y deseas crear un .drdl archivo desde una base de datos Atlas, utiliza el siguiente formato de comando:

mongodrdl --host <domain0>.mongodb.net:27017,<domain1>.mongodb.net:27017,... \
--username <username> \
--password <password> \
--ssl \
--authenticationDatabase admin \
--db <database> \
--out schema.drdl

Volver

mongosqld

En esta página