Перейти к основному содержимому
Перейти к основному содержимому

mongodb Табличная Функция

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

Синтаксис

mongodb(host:port, database, collection, user, password, structure[, options[, oid_columns]])

Аргументы

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

Если вы используете облачное предложение MongoDB Atlas, пожалуйста, добавьте эти параметры:

'connectTimeoutMS=10000&ssl=true&authSource=admin'

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

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

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

Объект таблицы с теми же столбцами, что и у оригинальной таблицы 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"}
)

Давайте запрашивать коллекцию, используя табличную функцию 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'
)