sql >> Database >  >> NoSQL >> MongoDB

vind id van laatste subdocument ingevoegd in mangoest

Ik ben ook op zoek naar dit antwoord en ik weet niet zeker of ik het leuk vind om toegang te krijgen tot het laatste document van de array. Ik heb echter wel een alternatieve oplossing. De methode m['b'].push zal een geheel getal retourneren, 1 of 0 - ik neem aan dat dit is gebaseerd op het succes van de push (in termen van validatie). Om echter toegang te krijgen tot het subdocument, en in het bijzonder de _id van het subdocument, moet u de create gebruiken methode eerst, dan push .

De code is als volgt:

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

Wat er gebeurt, is dat wanneer u het object doorgeeft aan de push- of de create-methode, de Schema-cast onmiddellijk plaatsvindt (inclusief zaken als validatie en typecasting) - dit betekent dat dit het moment is waarop de ObjectId wordt gemaakt; niet wanneer het model terug naar Mongo wordt opgeslagen. Mongo wijst in feite niet automatisch _id-waarden toe aan subdocumenten, dit is een mangoestfunctie. Het maken van Mongoose wordt hier gedocumenteerd:maak documenten

Houd er daarom rekening mee dat ook al heb je een subdocument _id - het nog niet in Mongo is totdat je het opslaat, dus wees moe van elke DOCRef-actie die je zou kunnen ondernemen.



  1. MongoDB:uitzondering in initAndListen:20 Poging om een ​​vergrendelingsbestand te maken in een alleen-lezen map:/data/db, beëindigen

  2. rangschikkingsbord in mongo met omringende spelers

  3. Is er een manier om een ​​specifieke sleutel te lokaliseren op een specifieke redis-instantie in clustermodus?

  4. Laravel + predis + Redis cluster - VERPLAATST / geen verbinding naar 127.0.0.1:6379