Pular para o conteúdo principal
Permite executar consultas SELECT em dados armazenados em um servidor MongoDB remoto.

Sintaxe

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

Argumentos

ArgumentoDescrição
host:portEndereço do servidor MongoDB.
databaseNome do banco de dados remoto.
collectionNome da coleção remota.
userUsuário do MongoDB.
passwordSenha do usuário.
structureO esquema da tabela do ClickHouse retornada por esta função.
optionsOpções da string de conexão do MongoDB (parâmetro opcional).
oid_columnsLista de colunas separadas por vírgulas que devem ser tratadas como oid na cláusula WHERE. _id por padrão.
Se você estiver usando o serviço em nuvem MongoDB Atlas, adicione estas opções:
'connectTimeoutMS=10000&ssl=true&authSource=admin'
Você também pode se conectar por URI:
mongodb(uri, collection, structure[, oid_columns])
ArgumentoDescrição
uriString de conexão.
collectionNome da coleção remota.
structureO esquema da tabela do ClickHouse retornada por esta função.
oid_columnsLista de colunas separadas por vírgula que devem ser tratadas como oid na cláusula WHERE. _id por padrão.
:::
Você pode passar os argumentos usando uma coleção nomeada:
mongodb(_named_collection_[, host][, port][, database][, collection][, user][, password][, structure][, options][, oid_columns])
-- ou
mongodb(_named_collection_[, uri][, structure][, oid_columns])

Valor retornado

Um objeto do tipo tabela com as mesmas colunas da tabela original do MongoDB.

Exemplos

Suponha que exista uma coleção chamada my_collection definida em um banco de dados MongoDB chamado test e que insiramos alguns documentos:
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"}
)
Vamos consultar a coleção usando a função de tabela mongodb:
SELECT * FROM mongodb(
    '127.0.0.1:27017',
    'test',
    'my_collection',
    'test_user',
    'password',
    'log_type String, host String, command String',
    'connectTimeoutMS=10000'
)
ou:
SELECT * FROM mongodb(
    'mongodb://test_user:password@127.0.0.1:27017/test?connectionTimeoutMS=10000',
    'my_collection',
    'log_type String, host String, command String'
)
ou:
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'
)
Última modificação em 10 de junho de 2026