Acho que o que você está se referindo como JSON é na verdade um objeto de documento do Mongoose, dadas as tags que você adicionou à sua pergunta. Como esse objeto está anexado ao seu "esquema", você pode ter regras lá, como um campo "obrigatório" ou algo que esteja interferindo na operação que você está tentando fazer.
Para obter uma forma bruta do objeto de volta, basta usar o
.toObject()
método no resultado do documento:Model.findOne({ _id: id}, function(err,doc) {
var raw = doc.toObject();
delete raw.element;
console.log( raw );
});
Claro que você pode sempre omitir o campo de ser retornado no resultado da consulta com o formulário básico fornecido por
.select()
:Model.findOne({ _id: id}, '-element', function(err,doc) {
console.log( doc );
});
Qualquer formulário removeria esse campo específico da resposta, mas se você quiser mais controle sobre o resultado do que pode ser fornecido pela projeção de campo de
.select()
então use o .toObject()
form e manipular apenas como um objeto JavaScript simples.