Pular para conteúdo

mongodb

fonte

lê documentos de uma collection mongodb e os transforma em registros tabulares para processamento downstream.


casos de uso

  • extrair logs ou eventos armazenados no mongo
  • sincronizar documentos para um lakehouse analítico
  • transformar dados de um schema flexível em tabelas estruturadas

configuração

campo tipo obrigatório descrição
credential_id uuid sim id da conexão mongodb em conexões
database string sim nome do banco de dados
collection string sim nome da collection
filter object não filtro mongodb (sintaxe do driver pymongo) · padrão: {}
projection object não campos a incluir/excluir · padrão: todos os campos
limit number não máximo de documentos a retornar · 0 = sem limite

exemplos

leitura completa de uma collection

{
  "credential_id": "uuid-da-conexao",
  "database": "app_producao",
  "collection": "pedidos"
}

com filtro por data

{
  "credential_id": "uuid-da-conexao",
  "database": "app_producao",
  "collection": "pedidos",
  "filter": {
    "created_at": {
      "$gte": { "$date": "2024-01-01T00:00:00Z" }
    },
    "status": "finalizado"
  }
}

com projeção (selecionar campos)

{
  "credential_id": "uuid-da-conexao",
  "database": "app_producao",
  "collection": "usuarios",
  "projection": {
    "_id": 0,
    "email": 1,
    "nome": 1,
    "created_at": 1,
    "plano": 1
  },
  "limit": 10000
}

filtrando por operador in

{
  "credential_id": "uuid-da-conexao",
  "database": "app_producao",
  "collection": "eventos",
  "filter": {
    "tipo": { "$in": ["compra", "cancelamento", "reembolso"] }
  }
}

estrutura de dados

documentos mongodb são convertidos para linhas tabulares:

documento mongodb:
{
  "_id": ObjectId("..."),
  "nome": "João",
  "endereco": { "cidade": "SP", "estado": "SP" },
  "tags": ["premium", "ativo"]
}

↓ após conversão

| _id         | nome  | endereco          | tags              |
|-------------|-------|-------------------|-------------------|
| ObjectId... | João  | {"cidade": "SP"}  | ["premium","ativo"]|

campos aninhados (object) ficam como json string na tabela. use o nó expandir json para desestruturá-los.

documentos com schema variável

quando os documentos de uma collection têm campos diferentes, o duckdb infere o schema da união de todos os campos. colunas ausentes em alguns documentos recebem valor null.


configurando a conexão

em configurações → conexões, crie uma conexão do tipo mongodb:

campo descrição
host endereço do servidor mongo
port porta (padrão: 27017)
credencial usuário e senha (opcional para mongo sem auth)

a uri é montada automaticamente:

mongodb://usuario:senha@host:porta