Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

mongodb

Позволяет выполнять SELECT-запросы к данным, хранящимся на удалённом сервере MongoDB.

Синтаксис

mongodb(host:port, database, collection, user, password, structure[, options[, oid_columns]]);
mongodb(uri, collection, structure[, oid_columns]);
mongodb(named_collection_name[, <arg>=<value>...]);

Аргументы

Аргумент Описание
host:port Адрес сервера MongoDB.
database Имя удалённой базы данных.
collection Имя удалённой коллекции.
user Пользователь MongoDB.
password Пароль пользователя.
structure Схема таблицы ClickHouse, которую возвращает эта функция.
options Параметры строки подключения MongoDB (необязательный параметр).
oid_columns Разделённый запятыми список столбцов, которые следует обрабатывать как oid в предложении WHERE. По умолчанию — _id.

Вы также можете подключиться с помощью URI:

mongodb(uri, collection, structure[, oid_columns])
Аргумент Описание
uri Строка подключения.
collection Имя удалённой коллекции.
structure Схема таблицы ClickHouse, которую возвращает эта функция.
oid_columns Список столбцов, разделённых запятыми, которые следует обрабатывать как oid в предложении WHERE. По умолчанию — _id.

Вы можете передать аргументы с помощью именованной коллекции:

mongodb(_named_collection_[, host][, port][, database][, collection][, user][, password][, structure][, options][, oid_columns])
-- or
mongodb(_named_collection_[, uri][, structure][, oid_columns])

Возвращаемое значение

Объект таблицы с теми же столбцами, что и у исходной таблицы MongoDB.

Примеры

Предположим, у нас есть коллекция my_collection в базе данных MongoDB test, и мы вставляем в неё пару документов:

db.createUser({user:"test_user",pwd:"password",roles:[{role:"readWrite",db:"test"}]})

db.createCollection("my_collection")

db.my_collection.insertOne(
    { log_type: "event", host: "120.5.33.9", command: "check-cpu-usage -w 75 -c 90" }
)

db.my_collection.insertOne(
    { log_type: "event", host: "120.5.33.4", command: "system-check"}
)

Давайте выполним запрос к коллекции с помощью table function mongodb:

SELECT * FROM mongodb(
    '127.0.0.1:27017',
    'test',
    'my_collection',
    'test_user',
    'password',
    'log_type String, host String, command String',
    'connectTimeoutMS=10000'
)

или:

SELECT * FROM mongodb(
    'mongodb://test_user:password@127.0.0.1:27017/test?connectionTimeoutMS=10000',
    'my_collection',
    'log_type String, host String, command String'
)

или:

CREATE NAMED COLLECTION mongo_creds AS
       uri='mongodb://test_user:password@127.0.0.1:27017/test?connectionTimeoutMS=10000',
       collection='default_collection';

SELECT * FROM mongodb(
        mongo_creds,
        collection = 'my_collection',
        structure = 'log_type String, host String, command String'
)
Navigation