Menu Docs
Página inicial do Docs
/
BI Connector
/

mongotranslate

Nesta página

  • Descrição
  • Uso
  • Opções de linha de comando
  • Exemplos

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.

mongotranslate tem a seguinte sintaxe:

mongotranslate [--query | --queryFile] <query | queryfile> [options]
--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 programa mongodrdl 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 que fruit está no banco de dados groceries:

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 que fruit esteja no banco de dados test. Se o esquema não contiver um banco de dados denominado test ou um nome de tabela fruit no banco de dados test, 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ção EXPLAIN <query> em uma ferramenta de BI conectada ao BI Connector.

--format

Padrão: multiline

Opcional. As opções válidas são none e multiline. A opção multiline padrão exibe resultados em um formato mais legível.

Tipo de comando
Opção
Descrição

Sem 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.

--mongoversion

Padrão: latest

Opcional. Retorna um pipeline de agregação compatível com a versão especificada do MongoDB. Os valores aceitáveis são:

  • 3.2

  • 3.4

  • 3.6

  • 4.0

  • latest

O valor padrão é latest.

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
}
]

Voltar

mongodril