MongoDB
MongoDBエンジンはリモートの MongoDB コレクションからデータを読み取ることができる読み取り専用テーブルエンジンです。
MongoDB v3.6+ サーバーのみがサポートされています。
Seed list(mongodb+srv
) はまだサポートされていません。
問題が発生した場合は、問題を報告してください。また、レガシー実装を使用してみてください。
これは非推奨であり、次のリリースで削除されることに注意してください。
テーブルの作成
エンジンパラメータ
-
host:port
— MongoDBサーバーのアドレス。 -
database
— リモートデータベースの名前。 -
collection
— リモートコレクションの名前。 -
user
— MongoDBユーザー。 -
password
— ユーザーパスワード。 -
options
— MongoDB接続文字列オプション(オプションのパラメータ)。
MongoDB Atlasクラウドを使用している場合、接続URLは「Atlas SQL」オプションから取得できます。
Seed list(mongodb**+srv**
)はまだサポートされていませんが、将来のリリースで追加される予定です。
URIを渡すこともできます:
エンジンパラメータ
-
uri
— MongoDBサーバーの接続URI -
collection
— リモートコレクションの名前。
型のマッピング
MongoDB | ClickHouse |
---|---|
bool, int32, int64 | 任意の数値型, String |
double | Float64, String |
date | Date, Date32, DateTime, DateTime64, String |
string | String, UUID |
document | String(JSONとして) |
array | Array, String(JSONとして) |
oid | String |
binary | カラムにある場合はString、配列またはドキュメントにある場合はbase64エンコードされた文字列 |
その他すべて | String |
MongoDBドキュメントにキーが見つからない場合(例えば、カラム名が一致しない場合)、デフォルト値または NULL
(カラムがnullableの場合)が挿入されます。
サポートされる句
単純な式を持つクエリのみがサポートされています(例えば、WHERE field = <constant> ORDER BY field2 LIMIT <constant>
)。
このような式はMongoDBのクエリ言語に変換され、サーバー側で実行されます。
このすべての制限を無効にするには、 mongodb_throw_on_unsupported_query を使用してください。
その場合、ClickHouseはクエリを最善の努力で変換しようとしますが、完全なテーブルスキャンおよびClickHouse側での処理を引き起こす可能性があります。
リテラルの型は明示的に設定することが常に良いです。Mongoは厳格な型フィルタを要求します。
例えば、Date
でフィルタしたい場合:
これは動作しません。Mongoは文字列を Date
にキャストしないため、手動でキャストする必要があります:
これは Date
, Date32
, DateTime
, Bool
, UUID
に適用されます。
使用例
MongoDBに sample_mflix データセットがロードされていると仮定します。
MongoDBコレクションからデータを読み取ることができるClickHouseのテーブルを作成します:
クエリ:
トラブルシューティング
生成されたMongoDBクエリはDEBUGレベルのログに表示されます。