5
respostas

[Dúvida] Existe um erro mas não estou sabendo encontra-lo. To travado nisso :(

WriteError({
    "index" : 0,
    "code" : 121,
    "errmsg" : "Document failed validation",
    "op" : {
        "_id" : ObjectId("64edf80649cb46e259a44784"),
        "Nome" : "Emanuelly Raquel Peixoto",
        "CPF" : "587.179.508-05",
        "Data_Nascimento" : "24/05/1966",
        "Genero" : "Feminino",
        "Profissao" : "Gerente de loja",
        "Endereco" : "Rua São Bento Abade, número 833, Jardim Marilena, Guarulhos, SP, 07140-450",
        "Status_Civil" : "Viuvo(a)"
    },
    "errInfo" : {
        "failingDocumentId" : ObjectId("64edf80649cb46e259a44784"),
        "details" : {
            "operatorName" : "$eq",
            "specifiedAs" : {
                "jsonSchema" : {
                    "bsonType" : "object",
                    "additionalProperties" : false,
                    "required" : [
                        "_id",
                        "Nome",
                        "CPF",
                        "Status_Civil",
                        "Data_Nascimento",
                        "Endereco",
                        "Genero",
                        "Profissao"
                    ],
                    "properties" : {
                        "_id" : {
                            "bsonType" : "objectId",
                            "description" : "Informe corretamente o id do cliente"
                        },
                        "Nome" : {
                            "bsonType" : "string",
                            "maxLength" : 150,
                            "description" : "Informe corretamente o nome do cliente"
                        },
                        "CPF" : {
                            "bsonType" : "string",
                            "minLength" : 14,
                            "maxLength" : 14,
                            "description" : "Informe corretamente o CPF do cliente"
                        },
                        "Status_Civil" : {
                            "bsonType" : "string",
                            "enum" : [ "Solteiro(a)", "Casado(a)", "Separado(a)", "Divorciado(a)", "Viuvo(a)" ],
                            "description" : "Informe corretamente o Status Civil do cliente"
                        },
                        "Data_Nascimento" : {
                            "bsonType" : [ "string", "null" ],
                            "description" : "Informe corretamente a data de nascimento do cliente"
                        },
                        "Endereco" : {
                            "bsonType" : "string",
                            "description" : "Informe corretamente o endereço do cliente"
                        },
                        "Genero" : {
                            "bsonType" : "string",
                            "description" : "Informe corretamente o genero do cliente"
                        },
                        "Profissao" : {
                            "bsonType" : "string",
                            "description" : "Informe corretamente a profissão do cliente"
                        }
                    }
                }
            },
            "reason" : "field was missing"
        }
    }
})
5 respostas

Fiz algumas alterações para tentar resolver, mas o erro ainda persiste.

A ultima modificação foi:

Validador

db.runCommand({collMod: "Clientes",

    validator:{
            jsonSchema:{
                bsonType: "object",
                //"additionalProperties": false,
                required: ["_id", "Nome", "CPF", "Status_Civil", "Data_Nascimento", "Endereco", "Genero", "Profissao"],
                properties:{
                    _id:{
                        bsonType: "objectId",
                        description: "Informe corretamente o id do cliente"
                    },
                    Nome:{
                        bsonType: "string",
                        maxLength: 150,
                        description: "Informe corretamente o nome do cliente"
                    },
                    CPF:{
                        bsonType: "string",
                        minLength: 14,
                        maxLength: 14,
                        description: "Informe corretamente o CPF do cliente"
                    },
                    Status_Civil:{
                        bsonType: "string",
                        enum: ["Solteiro(a)", "Casado(a)", "Separado(a)", "Divorciado(a)", "Viuvo(a)"],
                        description: "Informe corretamente o Status Civil do cliente"
                    },
                    Data_Nascimento:{
                        bsonType: ["string", "null"],
                        description: "Informe corretamente a data de nascimento do cliente"
                    },
                    Endereco:{
                        bsonType: "string",
                        description: "Informe corretamente o endereço do cliente"
                    },
                    Genero:{
                        bsonType: "string",
                        description: "Informe corretamente o genero do cliente"
                    },
                    Profissao:{
                        bsonType: "string",
                        description: "Informe corretamente a profissão do cliente"
                    }
                    }
                    }
                    
                }
    
})

Para os Dados, estou tentando os dois:

db.Clientes.insert({"Nome": "Emanuelly Raquel Peixoto", "_id": ObjectId(), // Gera um ObjectId automaticamente
"CPF": "587.179.508-05",
"Data_Nascimento": "24/05/1966",
"Genero": "Feminino",
"Profissao": "Gerente de loja",
"Endereco": "Rua São Bento Abade, número 833, Jardim Marilena, Guarulhos, SP, 07140-450",
"Status_Civil": "Viuvo(a)"
})

e

 db.Clientes.insertOne({"Nome": "Filipe Leonardo Corte Real", "_id": ObjectId(),
"CPF": "280.448.684-29",
"Data_Nascimento": null,
"Genero": "Masculino",
"Profissao": "Surpevisor de vendas comercial",
"Endereco": "Avenida Aeroclube, número 156, Tambor, Campina Grande, PB, 58414-710",
"Status_Civil": "Casado(a)"
})

No primeiro caso eu conseguir inserir os dados ou remover o validador com:

db.runCommand({ collMod: "Clientes", validator: {} }) //Limpa o validador

E o ultimo erro:

WriteError({
    "index" : 0,
    "code" : 121,
    "errmsg" : "Document failed validation",
    "op" : {
        "Nome" : "Filipe Leonardo Corte Real",
        "_id" : ObjectId("64f7326d8cf154bd8df77b93"),
        "CPF" : "280.448.684-29",
        "Data_Nascimento" : null,
        "Genero" : "Masculino",
        "Profissao" : "Surpevisor de vendas comercial",
        "Endereco" : "Avenida Aeroclube, número 156, Tambor, Campina Grande, PB, 58414-710",
        "Status_Civil" : "Casado(a)"
    },
    "errInfo" : {
        "failingDocumentId" : ObjectId("64f7326d8cf154bd8df77b93"),
        "details" : {
            "operatorName" : "$eq",
            "specifiedAs" : {
                "jsonSchema" : {
                    "bsonType" : "object",
                    "required" : [
                        "_id",
                        "Nome",
                        "CPF",
                        "Status_Civil",
                        "Data_Nascimento",
                        "Endereco",
                        "Genero",
                        "Profissao"
                    ],
                    "properties" : {
                        "_id" : {
                            "bsonType" : "objectId",
                            "description" : "Informe corretamente o id do cliente"
                        },
                        "Nome" : {
                            "bsonType" : "string",
                            "maxLength" : 150,
                            "description" : "Informe corretamente o nome do cliente"
                        },
                        "CPF" : {
                            "bsonType" : "string",
                            "minLength" : 14,
                            "maxLength" : 14,
                            "description" : "Informe corretamente o CPF do cliente"
                        },
                        "Status_Civil" : {
                            "bsonType" : "string",
                            "enum" : [ "Solteiro(a)", "Casado(a)", "Separado(a)", "Divorciado(a)", "Viuvo(a)" ],
                            "description" : "Informe corretamente o Status Civil do cliente"
                        },
                        "Data_Nascimento" : {
                            "bsonType" : [ "string", "null" ],
                            "description" : "Informe corretamente a data de nascimento do cliente"
                        },
                        "Endereco" : {
                            "bsonType" : "string",
                            "description" : "Informe corretamente o endereço do cliente"
                        },
                        "Genero" : {
                            "bsonType" : "string",
                            "description" : "Informe corretamente o genero do cliente"
                        },
                        "Profissao" : {
                            "bsonType" : "string",
                            "description" : "Informe corretamente a profissão do cliente"
                        }
                    }
                }
            },
            "reason" : "field was missing"
        }
    }
})

A única coisa que consegui ver que poderia estar faltando foi a falta do cifrão em frente a jsonSchema -> o certo seria $jsonSchema

Opa. Era realmente esse o problema, não havia notado antes pois quando mando validar sem o $ ele não da erro, Dai passou direto isso.

Obigado, amigo \o/.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software