Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

mongodb

Permite realizar consultas SELECT sobre datos almacenados en un servidor remoto de MongoDB.

Sintaxis

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

Argumentos

Argumento Descripción
host:port Dirección del servidor de MongoDB.
database Nombre de la base de datos remota.
collection Nombre de la colección remota.
user Usuario de MongoDB.
password Contraseña del usuario.
structure Esquema de la tabla de ClickHouse que devuelve esta función.
options Opciones de la cadena de conexión de MongoDB (parámetro opcional).
oid_columns Lista de columnas separadas por comas que deben tratarse como oid en la cláusula WHERE. _id de forma predeterminada.

También puede conectarse mediante una URI:

mongodb(uri, collection, structure[, oid_columns])
Argumento Descripción
uri Cadena de conexión.
collection Nombre de la colección remota.
structure El esquema de la tabla de ClickHouse que devuelve esta función.
oid_columns Lista de columnas separadas por comas que deben tratarse como oid en la cláusula WHERE. _id de forma predeterminada.

Puede proporcionar los argumentos mediante una colección nombrada:

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

Valor devuelto

Un objeto de tipo tabla con las mismas columnas que la tabla original de MongoDB.

Ejemplos

Supongamos que tenemos una colección llamada my_collection definida en una base de datos de MongoDB llamada test y que insertamos un par de 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"}
)

Consultemos la colección con la función de tabla mongodb:

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

o:

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

o:

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