AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

mongodrdl

注意

MongoDB Connector for BI および関連ユーティリティは、現在サポートされているすべての MongoDB サーバー バージョンと互換性があります。

mongodrdl は、MongoDB Connector for BI のリレーショナル スキーマ管理ツールです。 mongodrdlバイナリは次のことが可能です。

  • Produce a schema1 つ以上のMongoDBコレクションの内容に基づいて を作成し、それらを.drdl で使用されるmongosqld ファイルに書き込みます。

  • Upload.drdlBI Connector が読み込んでいるMongoDBデプロイへの ファイルのスキーマを します。

  • Download MongoDB 配置から保存されたスキーマ。

  • Delete MongoDB 配置から保存されたスキーマ。

  • Name を使用して MongoDB 配置にスキーマを保存し、管理を容易にします。

.drdlファイルを手動で編集して、BI Connector のスキーマをカスタマイズできます。 .drdl形式と.drdlファイルの手動編集の詳細については、「 CRDL ファイルからスキーマを読み込む 」を参照してください。

BI Connector のすべてのスキーマ管理オプションの詳細については、「 MongoDB へのリレーショナル スキーマのマッピング 」を参照してください。

重要

DDL ファイルに加えた変更を適用するには、 mongosqldを再起動する必要があります。

mongodrdl は、次の構文を使用します。

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

バージョン2.6の新機能。

デフォルトで最小限必要な TLS バージョンは、1.1 mongodrdlからMongoDBへの送信接続に です。

この設定は--minimumTLSVersion オプションで調整できます。

バージョン2.11の新機能。

mongodrdlの動作は、次のコマンドのいずれかによって決まります。 コマンドが指定されていない場合、 mongodrdlは指定された名前空間をサンプリングします。

sample

--db--collection、オプションの 、およびその他のコマンドラインオプションで指定された名前空間をサンプリングし、.drdlファイルを出力しますsample mongodrdl2コマンドは、バージョン. より前のすべての の動作をカプセル化します。11

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

保存された各スキーマのObjectIdの string 表現と、それが作成された日付を一覧表示します。

list-schema-ids には次のオプションが必要です。

名前
説明

必須。 スキーマ情報を保存するデータベースを指定します。

たとえば、次のコマンドは、 schemasデータベース内のスキーマ ID を一覧表示します。

mongodrdl list-schema-ids --schemaSource schemas

出力は次のようになります。

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

名前を持つ保存済みスキーマごとのObjectIdの名前と string 表現を一覧表示します。

保存されたスキーマは、デフォルトでは 名前なし です。名前付きスキーマを参照するには、--name downloaddeleteコマンドと コマンドでname-schema オプションを使用します。スキーマに名前を付けるまたは名前を変更するには、 コマンドを使用します。

list-schema-names には次のオプションが必要です。

名前
説明

必須。 スキーマ情報を保存するデータベースを指定します。

たとえば、次のコマンドは、 schemasデータベース内の各名前付きスキーマの名前と ObjectId を返します。

mongodrdl list-schema-names --schemaSource schemas

出力は次のようになります。

movies 5d72ad695c23a9e3e26e3c85
theaters 5d72adea5c23a9e44882a1ad
upload

指定された ファイルから.drdl --schemaSourceオプションで指定されたデータベースにスキーマをアップロードします。スキーマはschemas コレクションにアップロードされます。

upload には次のオプションが必要です。

名前
説明

必須。 スキーマ情報を保存するデータベースを指定します。

--drdl

必須。 アップロードする.drdlファイルへのパス。

たとえば、次のコマンドは、 movies.drdlファイル内のスキーマをschemasデータベースにアップロードします。

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

アップロードされたスキーマのObjectIdの string 表現が返されます。

5d793f3f6a26a3ce66c304ea

次の手順では、 コマンドを使用して、指定した名前でスキーマを保存します。name-schema

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

指定された名前を受け取った、新しくアップロードされたスキーマを使用するには、 オプションで指定されたスキーマ データベースと、 で指定されたスキーマ名でmongosqld --schemaSourceを再起動します。--schemaName

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

重要

カスタムスキーマをアップロードする場合、name-schema を使用して、指定された名前でスキーマを保存してから、--schemaName を使用してこの名前を mongosqld に指定する必要があります。アップロード時にスキーマの名前を保存しない場合、デフォルトのスキーマ名である defaultSchema が適用されます。スキーマ名が存在しない場合は、mongosqld から次のようなエラーが返されます。 「MongoDBスキーマはまだ利用できません。スキーマの初期化エラー : 名前に対応するスキーマが見つかりません。

download

ObjectIdの名前または string 表現で指定されたスキーマをダウンロードし、コンソールに出力します。

download は、次のオプションを受け入れます。

名前
説明

必須。 スキーマ情報を保存するデータベースを指定します。

--name

スキーマの名前。スキーマの名前付けの詳細については、name-schema コマンドを参照してください。

--schemaが指定されていない場合は必須です。

--schema

スキーマのObjectIdの string 表現。

--nameが指定されていない場合は必須です。

たとえば、次のコマンドはmoviesスキーマを コンソールに出力します。

mongodrdl download --schemaSource schemas --name movies

スキーマを.drdlファイルに保存するには、出力を目的の.drdlファイルに向けます。

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

名前またはObjectId の string 表現によって指定されたスキーマを削除します。

delete は、次のオプションを受け入れます。

名前
説明

必須。 スキーマ情報を保存するデータベースを指定します。

--name

スキーマの名前。スキーマの名前付けの詳細については、name-schema コマンドを参照してください。

--schemaが指定されていない場合は必須です。

--schema

スキーマのObjectIdの string 表現。

--nameが指定されていない場合は必須です。

たとえば、次のコマンドは、 schemasデータベース内の ID 5d7941dc6a26a3d0fc397284のスキーマを削除します。

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

スキーマの新しい名前を作成するか、スキーマの既存の名前を更新します。

保存されたスキーマは、デフォルトでは 名前なし です。名前付きスキーマを参照するには、--name downloaddeleteコマンドと コマンドでname-schema オプションを使用します。スキーマに名前を付けるまたは名前を変更するには、 コマンドを使用します。

name-schema には次のオプションが必要です。

名前
説明

必須。 スキーマ情報を保存するデータベースを指定します。

必須。 スキーマの新しい名前。

必須スキーマのObjectIdの string 表現。

たとえば、次のコマンドは、 schemasデータベース内の5d72adea5c23a9e44882a1adスキーマにmoviesとして名前を付けます。

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

mongodrdlのオプションと使用に関する情報を返します。

--version

mongodrdlのリリース番号を返します。

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

mongodrdlがより詳細なログ出力を提供するように指定します。冗長を高めるには、複数回含めます(例:-vvvvv )。または、数値を指定します(例:--verbose=5 )。

--quiet

すべてのログ出力を非表示にします。

--uri <mongodb-uri>

バージョン2.12の新機能。

MongoDB URI 接続文字列 。

重要

次のコマンドライン オプションは、--uri オプションと併用することはできません。

代わりに、--uri 接続文字列の一部としてこれらのオプションを指定します。

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

デフォルト: localhost:27017

接続先のmongod の解決可能なホスト名を指定します。デフォルトでは 、 はポート番号mongodrdl のローカルホストで実行中MongoDBインスタンスに接続しようとします。27017

replSetNameレプリカセットに接続するには、次のように とセットノードのシードリストを指定します。

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

ホストとポート番号を直接指定することで、いつでも単一の MongoDB インスタンスに直接接続できます。

--port <port>

デフォルト: 27017

MongoDB インスタンスがクライアント接続のためにリッスンする TCP ポートを指定します。

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

.drdlスキーマ ファイルを生成するデータベースを指定します。

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

.drdlスキーマ ファイルを生成するコレクションを指定します。 コレクションを指定せずにこのオプションは、指定されたデータベースまたはインスタンス内のすべてのコレクションを使用します。

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

カスタム MongoDB フィルターに追加するフィールド名を指定します。 詳細については、「カスタム フィルター」を参照してください。

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

デフォルト: 標準出力。

mongodrdlがスキーマファイルを書き込むパスを指定します。スキーマを標準出力に送信するには、- "" を指定します。パスの代わりに。

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

デフォルト: 1000

コレクションのスキーマを生成するときにサンプリングするドキュメントの数を指定します。

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

UUID バイナリ サブタイプ 3 の生成に使用するエンコーディングを指定します。次のいずれかの値を選択してください。

  • old: 古い BSON バイナリ サブタイプ形式

  • csharp: C#/.NET レガシー UUID 形式

  • java: Java レガシー UUID 形式

--preJoined

親列を含む展開テーブルを生成し、「事前結合」テーブルを作成します。

--schema <db-id>

バージョン2.11の新機能。

必須。 スキーマのObjectIdの string 表現を指定します。

--name <db-name>

バージョン2.11の新機能。

スキーマ名を指定します。

重要

カスタムスキーマをアップロードする場合、name-schema を使用して、指定された名前でスキーマを保存してから、--schemaName を使用してこの名前を mongosqld に指定する必要があります。アップロード時にスキーマの名前を保存しない場合、デフォルトのスキーマ名である defaultSchema が適用されます。スキーマ名が存在しない場合は、mongosqld から次のようなエラーが返されます。 「MongoDBスキーマはまだ利用できません。スキーマの初期化エラー : 名前に対応するスキーマが見つかりません。

--schemaSource <db-name>

バージョン2.11の新機能。

スキーマ情報を保存するデータベースを指定します。このオプションはsample コマンドでは使用されません。

--ssl

デフォルト: False

mongodrdlMongoDBインスタンスに接続するときに TLS/SSL を使用するように に指示します。

--sslCAFile <filename>

MongoDB インスタンスの .pem ファイルのうち、認証局からのルート証明書チェーンを含むものを指定します。相対パスまたは絶対パスを使用して、.pem ファイルのファイル名を指定します。

警告

およびmongos へのmongod SSL 接続(--sslmongodrdl )の場合、 --sslCAFile なしで実行される場合、mongodrdl はサーバー証明書の検証を試行しません。これにより、期限切れのmongodmongos およびmongos mongod証明書、および有効な または インスタンスを引き受ける外部プロセスに対する脆弱性が生じます。違反が発生する可能性がある場合に備えて、サーバー証明書を検証するために、常に CAファイルを指定するようにしてください。

--sslPEMKeyFile <filename>

MongoDB への接続時にmongosqldが使用する TLS/SSL 証明書と鍵の両方を含む.pemファイルを指定します。 相対パスまたは絶対パスを使用して、 .pemファイルのファイル名を指定できます。

このオプションは、--ssl オプションを使用して、allowConnectionsWithoutCertificates なしでmongodmongos CAFileが有効になっている または に接続する場合に必要です。

--sslPEMKeyPassword <password>

MongoDB への接続用証明書と秘密キーを含むファイルへのパスを指定します。

--sslCRLFile <filename>

証明書失効リストを含む .pem ファイルを指定します。相対パスまたは絶対パスを使用して .pem ファイルのファイル名を指定します。

--sslAllowInvalidCertificates

MongoDB インスタンスが無効なサーバー SSL/TLS 証明書を提示することを許可します。 allowInvalidCertificates設定を使用すると、MongoDB は警告として無効な証明書の使用をログに記録します。

--sslAllowInvalidHostnames

TLS/SSL 証明書のホスト名の検証を無効にします。証明書のホスト名が指定されたホスト名と一致しない場合、mongodrdl によるMongoDBインスタンスへの接続は許可されます。

--sslFIPSMode

mongodrdlインストールされた OpenSSL ライブラリの FIPSモードを使用するように に指示します。 オプションを使用するには、システムに FIPS 準拠の OpenSSL--sslFIPSMode ライブラリが必要です。

--minimumTLSVersion <TLS1_0|TLS1_1|TLS1_2>

デフォルト: TLS1_1

mongos またはmongod インスタンスに接続するために最小限必要なmongodrdl TLS バージョンを指定します。デフォルト値TLS1_1 は、TLS バージョン.1 に対応します。1

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

認証を使用する MongoDB database への認証すに使用するユーザー名を指定します。 --passwordおよび--authenticationDatabaseオプションと組み合わせて使用します。

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

認証を使用する MongoDB database に対して認証するためのパスワードを指定します。 --usernameおよび--authenticationDatabaseオプションと組み合わせて使用します。

--authenticationDatabase <dbname>

ユーザーが作成されるデータベースを指定します。 詳細については、「認証データベース 」を参照してください。

--authenticationMechanism <name>

デフォルト: SCRAM-SHA-1

mongodrdlインスタンスがmongod またはmongos への認証に使用する認証メカニズムを指定します。

説明

RFC5802 標準の Salted Challenge Response Authentication Mechanism(SHA1 ハッシュ関数を使用)。

バージョン 2.6 の新機能: RFC7677 標準の Salted Challenge Response Authentication Mechanism(SHA2 ハッシュ関数を使用)。

PLAIN(LDAP SASL)

LDAP を使用する外部認証。データベース内のユーザー認証には、PLAIN を使用することもできます。PLAIN はパスワードをプレーン テキストで送信します。このメカニズムは MongoDB Enterprise でのみ使用できます。

GSSAPI(Kerberos)

Kerberos を使用する外部認証。このメカニズムは MongoDB Enterprise でのみ使用できます。

--gssapiServiceName <service-name>

デフォルト: mongodb

GSSAPI/Kerberos を使用して認証するときに使用するサービス名。

--gssapiHostName <hostname>

デフォルト: リモート サーバーのアドレス

GSSAPI/Kerberos を使用して認証するときに使用するホスト名。

BI Connector は、 MongoDB集計パイプラインを使用して、MongoDB databaseに対してクエリを実行します。 スキーマに特別なフィールドを追加して、カスタムMongoDB $matchクエリstringをMongoDBインスタンスに渡すことができます。

--customFilterFieldmongodrdlカスタム フィルタフィールドに名前を付けるには、 と オプションを併用します。このフィールドは、ネイティブのMongoDB $match ステージを渡し、 MongoDBから返された結果をフィルタリングする集計パイプラインの最初のステージとして使用します。 BI Connector は、 SQLからプッシュダウンされる追加のステージの前にこのステージを適用します。

クエリは、フィールドがリレーショナル スキーマで公開されていない場合でも、コレクション内の任意のフィールドを参照できます。

カスタム フィルターの使用例については、「カスタム フィルターの例 」を参照してください。

データベースtest内のコレクションabcに次の形状のドキュメントがあるとします。

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

mongodrdlこのコレクションに基づいてスキーマを生成するには、 を実行します。

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

生成されたスキーマ ファイル( schema.drdl )は、次のようになります。

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

このフィールドを使用するには、このフィールドに含める名前を指定して--customFilterFieldフラグを指定します。

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

DDL ファイルschema.drdlでは、生成されたすべてのテーブルに次のフィールドが含まれます。

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

特別な MongoDB クエリ ステージを標準 SQL に追加するには、次の 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"}}}'

BI Connector は、上記の SQL を次の MongoDB集計式に変換します。

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

このカスタム フィルターは、特別なフィールドでフィルタリングし、有効なbusiness intelligence を表す単一の引用 として一致する値を提供することで、任意のstring JSONツールで使用できます。JSON内のすべての引用符はdouble引用符である必要があります。

MongoDBサーバーが認証を有効にして実行中いる場合は、 コマンドのオプションとしてユーザー名、パスワード、認証データベースを指定する必要があります。mongodrdl

.drdlを作成するには 認証が有効になっているmongodインスタンスからの ファイルには、次のコマンド形式を使用します。

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

MongoDB Atlasは MongoDB 配置の実行、モニター、メンテナンス用クラウド サービスです。MongoDB インスタンス専用サーバーのプロビジョニングもサービスの一環です。

注意

MongoDB Atlas はホストされた BI Connector を提供します。 Atlas がホストする BI Connector では、 mongodrdlコマンドの.drdlファイル出力は使用できません。 Atlas BI Connector では、サンプル更新間隔とサンプル サイズが調整可能なサンプリングが必要です。

Atlas がホストするBI Connector の詳細については、「 BI Connector 経由でクラスターに接続する 」を参照してください。

BI Connector をローカルで実行していて、 .drdlを作成する場合 Atlas データベースからの ファイルには、次のコマンド形式を使用します。

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