Docs 菜单
Docs 主页
/
BI Connector
/

mongotranslate

在此页面上

  • 说明
  • 使用
  • 命令行选项
  • 示例

mongotranslate 是一款学习工具,旨在帮助用户了解如何用MongoDB 聚合语言表示SQL查询。 BI Connector 的SQL到聚合转换引擎提供转换,这些转换还可用于解决特定的BI Connector转换问题。

mongotranslate 是一个独立运行的程序。 它需要由 生成的 drdl mongodrdl文件,但不要求mongosqldmongod 在执行时处于运行状态。

mongotranslate 通过以下语法实现:

mongotranslate [--query | --queryFile] <query | queryfile> [options]
--query

指定要转换为MongoDB聚合管道的SQL查询。 需要--query--queryFile

--queryFile

指定包含要转换为MongoDB聚合管道的SQL查询的文件的路径。 需要--query--queryFile

--schema

必需。 指定.drdl模式文件或包含由mongodrdl程序创建的一个或多个.drdl模式文件的目录,以便在将SQL查询转换为聚合管道时使用。

--dbName

默认值test

SQL 查询中用于非限定表名称的数据库名称。

以下示例使用名为 fruit 的集合和 --dbName 选项来指定 fruit 位于 groceries 数据库中:

mongotranslate "SELECT * FROM fruit WHERE _id > 100;" \
--schema schema.drdl --dbName groceries

如果不使用 --dbName 选项指定数据库,则 mongotranslate 假定 fruit 位于 test 数据库中。如果模式不包含名为 test 的数据库,或者 test 数据库中的表名 fruit,则 mongotranslate 将返回错误。

以下示例使用完全限定的表名,因此不需要 --dbName 选项。

mongotranslate "SELECT * FROM groceries.fruit WHERE _id > 100;" \
--schema schema.drdl

如果您在SQL查询中为每个表名称指定一个数据库,则使用--dbName选项将被忽略。

--explain

可选。返回查询计划的 explain 输出,而不是翻译后的聚合管道。使用 --explain 返回的输出与在连接到 BI Connector 的 BI 工具上运行 EXPLAIN <query> 的输出类似。

--format

默认值multiline

可选。 有效选项为nonemultiline 。 默认的multiline选项以更易于阅读的格式显示结果。

命令类型
选项
说明
没有--explain选项
--format none
在一行上返回聚合管道。
没有--explain选项
--format multiline
返回一个聚合管道,每行一个管道阶段。
使用--explain选项
--format none
在一行上返回所有字段。
使用--explain选项
--format multiline
每行返回一个字段,并对数组和对象子字段进行附加格式设置。
--mongoversion

默认值latest

可选。返回与指定的 MongoDB 版本兼容的聚合管道。可接受的值包括:

  • 3.2

  • 3.4

  • 3.6

  • 4.0

  • latest

默认值为 latest

以下示例指定用于翻译的内联查询:

mongotranslate --query=“select test.name from restaurants where name like 'Brooklyn%'” \
--schema=schema.drdl

上述命令返回以下结果:

[
{"$match": {"name": {"$regex": "^Brooklyn.*$","$options": "i"}}},
{"$project": {"test_DOT_restaurants_DOT_name": "$name","_id": {"$numberInt":"0"}}},
]

注意

如需在 --query 参数内引用字符串,请务必使用单引号。如果必须在查询中使用双引号或回车键,请使用 --queryFile 选项。

以下示例指定查询文件并返回单行结果:

mongotranslate --queryFile=query.txt --schema=schema.drdl --format=none

以下示例使用--explain选项:

mongotranslate --query="select count(name) from restaurants;" \
--schema=schema.drdl --explain

上述命令返回以下结果:

[
{
"ID": 1,
"StageType": "MongoSourceStage",
"Columns": "[{name: 'count(name)', type: 'int'}]",
"Sources": null,
"Database": {},
"Tables": {},
"Aliases": {},
"Collections": {},
"Pipeline": {},
"PipelineExplain": {},
"PushdownFailures": null
}
]

后退

mongodrdl