sql >> Databasteknik >  >> NoSQL >> MongoDB

hitta id för senaste underdokument infogat i mongoose

Jag har också letat efter det här svaret, och jag är inte säker på att jag gillar att komma åt det sista dokumentet i arrayen. Jag har dock en alternativ lösning. Metoden m['b'].push kommer att returnera ett heltal, 1 eller 0 - jag antar att det är baserat på framgången med push (när det gäller validering). Men för att få tillgång till underdokumentet, och särskilt _id för underdokumentet - bör du använda create metod först, sedan push .

Koden är följande:

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

Vad som händer är att när du skickar in objektet till antingen push- eller create-metoden, så sker Schema-casten omedelbart (inklusive saker som validering och typcasting) - detta betyder att det är den här tiden som ObjectId skapas; inte när modellen sparas tillbaka till Mongo. Faktum är att mongo inte automatiskt tilldelar _id-värden till underdokument, detta är en mongoose-funktion. Mongoose create dokumenteras här:create docs

Du bör därför också notera att även om du har ett underdokument _id - är det ännu inte i Mongo förrän du sparar det, så var trött på alla DOCRef-åtgärder du kan vidta.



  1. MongoDB kapslad grupp?

  2. Jag får felet Klass 'Predis\Client' hittades inte i Laravel 5.2

  3. MongoDB atomic findOrCreate:findOne, infoga om det inte finns, men uppdatera inte

  4. Meteor, definiera samlingar dynamiskt