mongotranslate
説明
mongotranslate
は、 MongoDB 集計言語で SQL クエリを表現する方法をユーザーが理解できるように設計された学習ツールです。 BI Connector の SQLから集計への変換エンジンは変換を提供します。これは、特定の BI Connector の変換の問題をトラブルシューティングするためにも使用できます。
mongotranslate
は、スタンドアロン プログラムです。 によって生成された drdl ファイルが必要ですが、実行時にmongodrdl
mongosqld
またはmongod
が実行中である必要はありません。
使用法
mongotranslate
の構文は次のとおりです。
mongotranslate [--query | --queryFile] <query | queryfile> [options]
コマンドライン オプション
--query
MongoDB 集計パイプラインに変換する SQL クエリを指定します。
--query
または--queryFile
のいずれかが必要です。
--queryFile
MongoDB 集計パイプラインに変換する SQL クエリを含むファイルへのパスを指定します。
--query
または--queryFile
のいずれかが必要です。
--schema
必須。 SQL クエリを集計パイプラインに変換するときに使用する
mongodrdl
プログラムによって作成された 1 つ以上の.drdl
.drdl
ファイルを含むディレクトリを指定します。
--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>
を実行するのと同様の出力が返されます。
例
次の例では、翻訳用のインライン クエリを指定しています。
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
パラメータ内で string を引用する必要がある場合は、必ず一重引用符を使用してください。 クエリでdouble引用符またはバックグラウンドを使用する必要がある場合は、 --queryFile
オプションを使用します。
次の例では、クエリ ファイルを指定し、1 行の結果を返します。
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 } ]