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.

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ério | O que o README informa | Limite |
|---|---|---|
| Disco | Arquivo 4,9 vezes menor que o JSONL | 100 mil registros, comparados ao JSONL lido pelo leitor do próprio jsonW |
| Velocidade | Leitura de um campo de uma linha 3.281 vezes mais rápida | Leitura e gravação completas têm diferença menor |
| Memória | Não há medição no README | O acesso direto lê o campo pedido sem decodificar o resto |
| Rede | Não há medição para o MongoDB | O HTTP Range vale para arquivos no R2, S3 ou HTTP, não para o banco |
| Servidor | Núcleo em C, sem dependências | O wcon roda em macOS e Linux; no Windows, pelo WSL |
| Qualidade do dado | Tipos exatos, custódia com SHA-256 ou BLAKE3 e crc32c | A 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
- Crie o arquivo de credencial com usuário e senha e aponte WMONGO_CRED para ele.
- Exporte uma coleção pequena com wcon mongo, usando um filtro, para começar.
- Rode wjsw info e wjsw conferir no arquivo gerado, para ver o esquema e a verificação de integridade.
- Leia alguns campos de ObjectId, Decimal128 e Timestamp com wjsw ver e compare com o documento original.
- Grave em uma coleção de teste com wcon mongo-gravar e compare o resultado.
- 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
- Repositório do jsonW, README
- AGENTS.md do repositório do jsonW
- Site do jsonW
- Manual do MongoDB: MongoDB Extended JSON (v2)
- iMasters, 6 de novembro de 2026: MongoDB 9.0 usa menos CPU que 8.0 e 8.3 em benchmark independente da Percona
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
- Repositório do jsonW, README
- AGENTS.md do repositório do jsonW
- Site do jsonW
- Manual do MongoDB: MongoDB Extended JSON (v2)
- iMasters, 6 de novembro de 2026: MongoDB 9.0 usa menos CPU que 8.0 e 8.3 em benchmark independente da Percona
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 consultorEquipe editorial
Equipe editorial da Wortic especializada em automacao, IA, ERP, CRM e crescimento operacional.
- Automacao com IA
- Gestao empresarial
- CRM
- ERP
- Marketing digital


