Passer au contenu principal
Le moteur de table MongoDB est un moteur de table en lecture seule qui permet de lire des données à partir d’une collection distante dans MongoDB. Seuls les serveurs MongoDB v3.6+ sont pris en charge. La Seed list(mongodb+srv) n’est pas encore prise en charge.

Création d’une table

Paramètres du moteur
Si vous utilisez l’offre cloud MongoDB Atlas, l’URL de connexion peut être obtenue via l’option ‘Atlas SQL’. La Seed list(mongodb**+srv**) n’est pas encore prise en charge, mais le sera dans de futures versions.
Sinon, vous pouvez transmettre un URI :
Paramètres du moteur

Correspondance des types

Si la clé est introuvable dans le document MongoDB (par exemple, si le nom de la colonne ne correspond pas), la valeur par défaut ou NULL (si la colonne est de type Nullable) sera insérée.

OID

Si vous voulez qu’une String soit traitée comme un oid dans la clause WHERE, il suffit d’indiquer le nom de la colonne dans le dernier argument du moteur de table. Cela peut être nécessaire lors d’une requête sur un enregistrement via la colonne _id, qui a par défaut le type oid dans MongoDB. Si le champ _id de la table est d’un autre type, par exemple uuid, vous devez spécifier un oid_columns vide ; sinon, la valeur par défaut de ce paramètre, _id, sera utilisée.
Par défaut, seul _id est considéré comme une colonne oid.
Dans ce cas, le résultat sera 0, car ClickHouse ne sait pas que another_oid_column est de type oid, alors corrigeons cela :

Clauses prises en charge

Seules les requêtes contenant des expressions simples sont prises en charge (par exemple, WHERE field = <constant> ORDER BY field2 LIMIT <constant>). Ces expressions sont traduites dans le langage de requête de MongoDB et exécutées côté serveur. Vous pouvez désactiver toutes ces restrictions avec mongodb_throw_on_unsupported_query. Dans ce cas, ClickHouse essaie de convertir la requête dans la mesure du possible, mais cela peut entraîner un scan complet de la table et un traitement côté ClickHouse.
Il est toujours préférable de définir explicitement le type d’un littéral, car Mongo exige des filtres strictement typés. Par exemple, si vous souhaitez filtrer sur Date :
Cela ne fonctionnera pas, car Mongo ne convertira pas la chaîne en Date ; vous devez donc la convertir manuellement :
Ceci s’applique à Date, Date32, DateTime, Bool, UUID.

Exemple d’utilisation

En supposant que le jeu de données sample_mflix soit chargé dans MongoDB Créez une table dans ClickHouse permettant de lire des données à partir d’une collection MongoDB :
Query
Query
Response
Query
Response
Query
Response

Dépannage

Vous pouvez voir la requête MongoDB générée dans les logs de niveau DEBUG. Les détails de l’implémentation sont disponibles dans la documentation de mongocxx et de mongoc.
Dernière modification le 1 juillet 2026