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

find id for seneste underdokument indsat i mongoose

Jeg har også ledt efter dette svar, og jeg er ikke sikker på, at jeg kan lide at få adgang til det sidste dokument i arrayet. Jeg har dog en alternativ løsning. Metoden m['b'].push vil returnere et heltal, 1 eller 0 - jeg antager, at det er baseret på succesen med push (med hensyn til validering). Men for at få adgang til underdokumentet, og især _id'et for underdokumentet - skal du bruge create metode først, derefter push .

Koden er som følger:

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

Det, der sker, er, at når du sender objektet ind til enten push- eller create-metoden, sker Schema-castet med det samme (inklusive ting som validering og type-casting) - det betyder, at det er det tidspunkt, hvor ObjectId'et oprettes; ikke når modellen er gemt tilbage til Mongo. Faktisk tildeler mongo ikke automatisk _id-værdier til underdokumenter, dette er en mongoose-funktion. Mongoose create er dokumenteret her:create docs

Du bør derfor også bemærke, at selvom du har et underdokument _id - er det endnu ikke i Mongo, før du gemmer det, så vær træt af enhver DOCRef handling, du måtte tage.



  1. Hvorfor har vi brug for en 'arbiter' i MongoDB-replikering?

  2. Oversæt FilterDefinition<TDocument> til almindelig json mongo-forespørgsel, som jeg kan køre i en mongo-skal

  3. Undgå samlet 16MB-grænse

  4. Ydeevne af Redis vs Disk i cacheapplikation