MongoDB
MongoDB engine это колоночный движок таблиц, который позволяет читать данные из удаленной MongoDB коллекции.
Поддерживаются только серверы MongoDB версии 3.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
— URI для подключения к серверу MongoDB. -
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
(если колонка допускает значение NULL).
Поддерживаемые конструкции
Поддерживаются только запросы с простыми выражениями (например, 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.
Создайте таблицу в ClickHouse, которая позволяет читать данные из коллекции MongoDB:
Запрос:
Устранение неполадок
Вы можете увидеть сгенерированный запрос MongoDB в логах уровня DEBUG.
Детали реализации можно найти в документациях mongocxx и mongoc.