mongotranslate
Nesta página
Descrição
mongotranslate
é uma ferramenta de aprendizado projetada para ajudar os usuários a entender como as queries SQL podem ser expressas nalinguagem de agregação do MongoDB . O mecanismo de tradução SQL-to-aggregation do BI Connector fornece as traduções, que também podem ser usadas para solucionar problemas específicos de tradução do BI Connector .
mongotranslate
é um programa autônomo . Requer um arquivo drdl gerado por mongodrdl
, mas não requer que mongosqld
ou mongod
estejam em execução no momento da execução.
Uso
mongotranslate
tem a seguinte sintaxe:
mongotranslate [--query | --queryFile] <query | queryfile> [options]
Opções de linha de comando
--query
Especifica uma query SQL para traduzir em um pipeline de agregação MongoDB . É necessário
--query
ou--queryFile
.
--queryFile
Especifica um caminho para um arquivo contendo uma query SQL para traduzir em um pipeline de agregação MongoDB . É necessário
--query
ou--queryFile
.
--schema
Obrigatório. Especifica um arquivo de esquema do
.drdl
ou um diretório contendo um ou mais arquivos de esquema do.drdl
criados pelo programamongodrdl
para utilizar ao converter uma query SQL em um pipeline de agregação .
--dbName
Padrão:
test
O nome do banco de dados a ser usado para nomes de tabelas não qualificados na query SQL.
O exemplo a seguir usa uma coleção chamada
fruit
e a opção--dbName
para especificar quefruit
está no banco de dadosgroceries
:mongotranslate "SELECT * FROM fruit WHERE _id > 100;" \ --schema schema.drdl --dbName groceries Se você não utilizar a opção
--dbName
para especificar um banco de dados,mongotranslate
pressupõe quefruit
esteja no banco de dadostest
. Se o esquema não contiver um banco de dados denominadotest
ou um nome de tabelafruit
no banco de dadostest
,mongotranslate
retornará um erro.O exemplo a seguir utiliza um nome de tabela totalmente qualificado, portanto não precisa da opção
--dbName
.mongotranslate "SELECT * FROM groceries.fruit WHERE _id > 100;" \ --schema schema.drdl Se você especificar um banco de dados de dados com cada nome de tabela em sua query SQL, a opção
--dbName
será ignorada se for utilizada.
--explain
Opcional. Retorna a saída
explain
para o plano de consulta em vez do pipeline de agregação traduzido. Usar--explain
retorna uma saída semelhante à execuçãoEXPLAIN <query>
em uma ferramenta de BI conectada ao BI Connector.
--format
Padrão:
multiline
Opcional. As opções válidas são
none
emultiline
. A opçãomultiline
padrão exibe resultados em um formato mais legível.Tipo de comandoOpçãoDescriçãoSem a
--explain
opção--format none
Retorna um pipeline de agregação em uma linha.
Sem a
--explain
opção--format multiline
Retorna um pipeline de agregação com um estágio de pipeline por linha.
Com a
--explain
opção--format none
Retorna todos os campos em uma linha.
Com a
--explain
opção--format multiline
Retorna um campo por linha, com formatação adicional para arrays e subcampos de objeto.
Exemplos
O exemplo a seguir especifica uma query in-line para tradução:
mongotranslate --query=“select test.name from restaurants where name like 'Brooklyn%'” \ --schema=schema.drdl
O comando acima retorna os seguintes resultados:
[ {"$match": {"name": {"$regex": "^Brooklyn.*$","$options": "i"}}}, {"$project": {"test_DOT_restaurants_DOT_name": "$name","_id": {"$numberInt":"0"}}}, ]
Observação
Se for necessário colocar aspas em uma string dentro do parâmetro --query
, use aspas simples. Caso seja necessário usar aspas duplas ou backticks na query, use a opção --queryFile
.
O exemplo a seguir especifica um arquivo de query e retorna um resultado de uma linha:
mongotranslate --queryFile=query.txt --schema=schema.drdl --format=none
O exemplo a seguir utiliza a opção --explain
:
mongotranslate --query="select count(name) from restaurants;" \ --schema=schema.drdl --explain
O comando acima retorna os seguintes resultados:
[ { "ID": 1, "StageType": "MongoSourceStage", "Columns": "[{name: 'count(name)', type: 'int'}]", "Sources": null, "Database": {}, "Tables": {}, "Aliases": {}, "Collections": {}, "Pipeline": {}, "PipelineExplain": {}, "PushdownFailures": null } ]