Pular para o conteúdo
Tecnologia

O JSON comum não tem tipo para ObjectId nem Decimal128: como exportar uma coleção do MongoDB sem perder o tipo

Em novembro de 2026, um teste independente da Percona reacendeu a discussão sobre custo e desempenho do MongoDB. Veja como o jsonW leva uma coleção para um arquivo com tipos preservados, o que o README mede de fato e o que ainda falta testar.

Por Equipe Wortic 7 min de leitura
O JSON comum não tem tipo para ObjectId nem Decimal128: como exportar uma coleção do MongoDB sem perder o tipo

Em 6 de novembro de 2026, o iMasters publicou a análise de um teste independente da Percona que colocou o MongoDB 9.0 lado a lado com as versões 8.0 e 8.3. A versão nova gastou menos CPU por operação nos três tamanhos de coleção testados. O ganho de throughput ficou perto de 6% quando o processador era o limite e perto de 2% quando o limite era memória ou disco. Para quem decide sobre dados, a lição vai além do banco: o resultado depende do gargalo do seu servidor, e só a medição na própria máquina diz quanto vale.

O JSON comum não guarda o tipo de cada campo

O JSON representa diretamente só uma parte dos tipos que o MongoDB grava em BSON. Para não perder essa informação, a documentação do banco define o Extended JSON, que acrescenta marcações ao texto. Três tipos aparecem com frequência em coleções reais:

  • ObjectId, o identificador de cada documento.
  • Decimal128, para números decimais de alta precisão.
  • Timestamp, que guarda segundos e um incremento.

No formato canônico, cada tipo ganha uma marca própria:

ObjectId:   {"$oid": "<24 caracteres hexadecimais>"}
Decimal128: {"$numberDecimal": "<número>"}
Timestamp:  {"$timestamp": {"t": <segundos>, "i": <incremento>}}

Se a exportação não preserva essas marcações, o tipo some do arquivo, e quem recebe precisa adivinhar o que cada campo era.

Como o jsonW leva a coleção e traz de volta

O comando wcon lê uma coleção do MongoDB e grava um arquivo .jsw. No sentido contrário, devolve os documentos ao banco com inserção ordenada em lotes. O README diz que ObjectId, Decimal128 e Timestamp entram no padrão Extended JSON. Ele não informa qual tipo de coluna cada um recebe no esquema. Por isso, vale conferir o arquivo gerado com wjsw info antes de depender do resultado.

O exemplo abaixo é o comando que o AGENTS.md do projeto traz para exportar os documentos ativos de uma coleção:

WMONGO_CRED=~/.cred/mongo wcon mongo 127.0.0.1:27017/loja produtos '{"ativo":true}' produtos.jsw

A senha não entra na linha de comando. Ela fica num arquivo indicado pela variável WMONGO_CRED, no formato usuário:senha. Segundo o README, os valores viajam como dado e não são montados dentro de um comando.

Vantagens e limites, número por número

Todos os números abaixo vêm do README do jsonW. Nenhum deles foi medido em uma coleção do MongoDB.

CritérioO que o README informaLimite
DiscoArquivo 4,9 vezes menor que o JSONL100 mil registros, comparados ao JSONL lido pelo leitor do próprio jsonW
VelocidadeLeitura de um campo de uma linha 3.281 vezes mais rápidaLeitura e gravação completas têm diferença menor
MemóriaNão há medição no READMEO acesso direto lê o campo pedido sem decodificar o resto
RedeNão há medição para o MongoDBO HTTP Range vale para arquivos no R2, S3 ou HTTP, não para o banco
ServidorNúcleo em C, sem dependênciasO wcon roda em macOS e Linux; no Windows, pelo WSL
Qualidade do dadoTipos exatos, custódia com SHA-256 ou BLAKE3 e crc32cA prova de ida e volta com o MongoDB foi feita na versão 7

Comparação com o que se usa hoje

O próprio README descreve o caminho de hoje: o dado passa por JSON para trafegar e por CSV ou Parquet para guardar. No MongoDB, a exportação mais comum também sai em JSON. A documentação do banco separa dois modos. O canônico preserva o tipo às custas da legibilidade. O relaxado é mais legível e abre mão de parte do tipo.

O jsonW tenta manter as duas coisas no mesmo arquivo: o tipo de cada campo e a leitura direta de um campo. Para um time que exporta hoje em modo relaxado e reprocessa tudo, a economia de disco e a leitura de um campo são as vantagens mais prováveis. Isso é hipótese até medir na coleção de vocês.

Passo a passo para testar em homologação

  1. Crie o arquivo de credencial com usuário e senha e aponte WMONGO_CRED para ele.
  2. Exporte uma coleção pequena com wcon mongo, usando um filtro, para começar.
  3. Rode wjsw info e wjsw conferir no arquivo gerado, para ver o esquema e a verificação de integridade.
  4. Leia alguns campos de ObjectId, Decimal128 e Timestamp com wjsw ver e compare com o documento original.
  5. Grave em uma coleção de teste com wcon mongo-gravar e compare o resultado.
  6. Meça na sua máquina com wjsw medir antes de decidir.

O fluxo em um diagrama

flowchart LR
    MG[(MongoDB origem)] --> W{{wcon mongo}}
    W --> J[arquivo .jsw]
    J --> C{{wjsw conferir}}
    J --> V[wjsw ver e filtrar]
    J --> G{{wcon mongo-gravar}}
    G --> MD[(MongoDB destino)]

Sobre o jsonW e a licença

O jsonW é criado e mantido pela Wortic. O núcleo é escrito em C, sem dependências. A licença de uso sustentável permite usar o formato dentro do seu produto, mas não permite revender o jsonW como serviço nem fazer engenharia reversa do núcleo. Na primeira execução de cada máquina, o wjsw envia só a versão e a plataforma, e a variável JSONW_SEM_PING=1 desliga esse envio. Para a documentação completa, veja o repositório do jsonW e o site do jsonW.

Fontes

Perguntas frequentes

Dá para exportar uma coleção do MongoDB sem perder o ObjectId?

Segundo o README do jsonW, o wcon mongo leva ObjectId, Decimal128 e Timestamp no padrão Extended JSON, e a prova de ida e volta foi feita com o MongoDB 7. Em outras versões, confira no seu ambiente com wjsw info e wjsw conferir antes de depender do resultado.

O jsonW é mais rápido que o JSON?

Depende da operação. O README informa que ler um campo de uma linha ficou 3.281 vezes mais rápido que no JSONL, em 100 mil registros, comparado ao leitor JSON do próprio projeto. Na leitura e gravação completas, a diferença é menor, e bibliotecas de JSON mais otimizadas reduzem o intervalo.

Preciso trocar meu banco de dados para usar o jsonW?

Não. O README diz que o jsonW funciona com os bancos que a empresa já usa. O wcon faz a ida e a volta entre o banco e o arquivo .jsw.

Onde fica a senha do MongoDB quando uso o wcon?

Num arquivo indicado pela variável WMONGO_CRED, com usuário e senha. O README diz que a senha não vem da linha de comando nem aparece na saída.

O que acontece se a gravação do arquivo for interrompida?

Segundo o README, o arquivo só anexa blocos, cada um com verificação própria. Se a gravação for cortada, perde-se só o último bloco, e o comando wjsw reparar refaz o fim do arquivo.

Funciona no Windows?

O README indica que o wcon e o wremoto rodam em macOS e Linux. No Windows, a orientação é usar o WSL.

Posso usar o jsonW dentro de um produto comercial?

A licença de uso sustentável permite usar o formato dentro do seu produto. Não é permitido revender o jsonW como serviço nem fazer engenharia reversa do núcleo. Leia o texto completo da licença antes de decidir.

Fontes

Conheça: jsonW com MongoDB.

Quer isso funcionando na sua empresa?

Um consultor da Wortic olha o seu caso e mostra o caminho, sem compromisso.

Falar com um consultor

Equipe editorial

Equipe editorial da Wortic especializada em automacao, IA, ERP, CRM e crescimento operacional.

  • Automacao com IA
  • Gestao empresarial
  • CRM
  • ERP
  • Marketing digital

Isso funcionando no seu negócio.

Um consultor mostra o sistema do seu ramo, com a IA dentro.