メインコンテンツへスキップ
MongoDBエンジンは、リモートの MongoDB コレクションからデータを読み取るための、読み取り専用のテーブルエンジンです。 MongoDB v3.6以降のサーバーのみサポートされています。 シードリスト(mongodb+srv) はまだサポートされていません。

テーブルの作成

エンジンパラメータ
MongoDB Atlas のクラウド版を使用している場合、接続 URL は ‘Atlas SQL’ オプションから取得できます。 シードリスト(mongodb**+srv**) はまだサポートされていませんが、今後のリリースで追加される予定です。
あるいは、URI を指定することもできます:
エンジンパラメータ

型マッピング

MongoDB ドキュメント内にキーが見つからない場合 (たとえばカラム名が一致しない場合) 、デフォルト値または NULL (カラムが Nullable の場合) が挿入されます。

OID

String をWHERE句で oid として扱いたい場合は、そのカラム名をテーブルエンジンの最後の引数に指定するだけです。 これは、MongoDB では _id カラムがデフォルトで oid 型になっているため、_id カラムでレコードをクエリする際に必要になることがあります。 テーブル内の _id フィールドが uuid など別の型である場合は、空の oid_columns を指定する必要があります。そうしないと、このパラメータのデフォルト値である _id が使用されます。
デフォルトでは、oid カラムとして扱われるのは _id のみです。
この場合、出力は 0 になります。これは、ClickHouse が another_oid_columnoid 型として認識していないためです。では、これを修正しましょう:

対応している句

サポートされるのは、単純な式を含むクエリのみです (たとえば、WHERE field = <constant> ORDER BY field2 LIMIT <constant>) 。 このような式は MongoDB クエリ言語に変換され、サーバー側で実行されます。 mongodb_throw_on_unsupported_query を使用すると、これらの制限をすべて無効にできます。 その場合、ClickHouse は可能な限りクエリの変換を試みますが、テーブル全体のスキャンや ClickHouse 側での処理が発生する可能性があります。
Mongo では厳密な型のフィルターが必要なため、リテラルの型は常に明示的に指定することをおすすめします。 たとえば、Date でフィルタリングしたい場合です。
Mongo は文字列を Date にキャストしないため、これは動作しません。そのため、手動でキャストする必要があります。
これは DateDate32DateTimeBoolUUID に当てはまります。

使用例

MongoDB に sample_mflix データセットが読み込まれているものとします MongoDB のコレクションからデータを読み取れる ClickHouse テーブルを作成します。
Query
Query
Response
Query
Response
Query
Response

トラブルシューティング

生成された MongoDB クエリは、DEBUG レベルのログで確認できます。 実装の詳細については、mongocxxmongoc のドキュメントを参照してください。
最終更新日 2026年6月10日