MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

trova l'ID dell'ultimo documento secondario inserito in mangusta

Ho cercato anche questa risposta e non sono sicuro che mi piaccia accedere all'ultimo documento dell'array. Ho una soluzione alternativa, comunque. Il metodo m['b'].push restituirà un numero intero, 1 o 0 - suppongo che sia basato sul successo del push (in termini di convalida). Tuttavia, per ottenere l'accesso al documento secondario, e in particolare all'_id del documento secondario, dovresti usare create prima il metodo, quindi push .

Il codice è il seguente:

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); });

Ciò che sta accadendo è che quando si passa l'oggetto al metodo push o al metodo di creazione, il cast di Schema si verifica immediatamente (incluse cose come la convalida e il cast del tipo):ciò significa che questa è l'ora in cui viene creato ObjectId; non quando il modello viene salvato di nuovo su Mongo. In effetti, mongo non assegna automaticamente valori _id ai documenti secondari, questa è una caratteristica mangusta. La creazione di Mongoose è documentata qui:crea documenti

Dovresti anche notare quindi che, anche se hai un documento secondario _id, non è ancora in Mongo finché non lo salvi, quindi sii stanco di qualsiasi azione DOCRef che potresti intraprendere.