MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

encontrar id do último subdocumento inserido no mangusto


Também tenho procurado essa resposta e não tenho certeza se gosto de acessar o último documento da matriz. Eu tenho uma solução alternativa, no entanto. O método m['b'].push retornará um inteiro, 1 ou 0 - estou assumindo que é baseado no sucesso do push (em termos de validação). No entanto, para obter acesso ao subdocumento, e particularmente ao _id do subdocumento - você deve usar o create método primeiro, depois push .

O código é o seguinte:
var subdoc = m['b'].create({ ba: 234, bb: "World" });
m['b'].push(subdoc);
console.log(subdoc._id);
m.save(function(err, model) { console.log(arguments); });

O que está acontecendo é que quando você passa o objeto para o método push ou create, a conversão do Schema ocorre imediatamente (incluindo coisas como validação e conversão de tipo) - isso significa que este é o momento em que o ObjectId é criado; não quando o modelo é salvo no Mongo. Na verdade, o mongo não atribui automaticamente valores _id a subdocumentos, este é um recurso do mongoose. A criação do Mongoose está documentada aqui:create docs

Você também deve observar, portanto, que mesmo que você tenha um subdocumento _id - ele ainda não está no Mongo até que você o salve, então fique cansado de qualquer ação DOCRef que você possa tomar.