O que esta ferramenta faz
Uma amostra JSON vira um esquema Mongoose, um const por objeto, e um modelo no fim.
{ "id": 1, "name": "Ada", "address": { "city": "Paris" } }
import mongoose from 'mongoose';
const AddressSchema = new mongoose.Schema({
city: { type: String, required: true },
});
const RootSchema = new mongoose.Schema({
id: { type: Number, required: true },
name: { type: String, required: true },
address: { type: AddressSchema, required: true },
});
export default mongoose.model('Root', RootSchema);
Os filhos primeiro: esquemas são valores de execução, um precisa existir antes que outro o use. Um array de documentos na raiz descreve o seu primeiro elemento — é ele a forma do registro, e a lista já é o que a coleção é.
required num array precisa de ajuda
O Mongoose dá a todo array o padrão []. Um campo declarado { type: [String], required: true } valida portanto mesmo sem a chave: o padrão satisfaz a exigência. Conferido no Mongoose 9:
| documento | required: true | required: true, default: undefined |
|---|---|---|
{ tags: ["a"] } | passa | passa |
{ tags: [] } | passa | passa |
{} | passa | falha |
A primeira coluna não diz o que a palavra promete. Os campos de array são por isso emitidos com default: undefined ao lado de required: true, para que um array ausente seja o erro que ele afirma ser. Um array vazio continua passando, e é justo: é um valor.
Objetos aninhados viram subdocumentos, com o seu próprio _id
O address acima é um subdocumento, e o Mongoose lhe dá um _id próprio:
{ _id: ObjectId("…"), address: { city: "Paris", _id: ObjectId("…") } }
É o padrão do Mongoose, não um acréscimo daqui. Se esses identificadores internos forem ruído para você, new mongoose.Schema({ … }, { _id: false }) os remove — uma decisão sobre os seus documentos, e por isso deixada com você.
Um export do MongoDB não é o JSON que você quer
O mongoexport escreve JSON estendido:
{ "_id": { "$oid": "65f1c…" }, "created": { "$date": "2026-01-01T00:00:00Z" } }
São objetos: o gerador faz esquemas de subdocumento com eles, e _id acaba como subdocumento carregando o seu próprio _id, o que certamente não era a intenção. Troque-os à mão por mongoose.Schema.Types.ObjectId e Date. Uma chave chamada $oid diz algo ao MongoDB e nada a um leitor de estruturas.
Mixed é onde a amostra se calou
null, um valor desconhecido, um array vazio e um array heterogêneo dão todos mongoose.Schema.Types.Mixed. Um campo Mixed não é validado e, bom saber, suas mudanças não são rastreadas automaticamente: é preciso chamar markModified. Estreite-o assim que souber o que deve estar ali.
Privado por padrão
Tudo é executado localmente no seu navegador com JavaScript. Os seus dados nunca são enviados para um servidor, o que torna a ferramenta segura para conteúdo sensível e funciona offline.