MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Finde die ID des letzten Filialdokuments, das in Mungo eingefügt wurde

Ich habe auch nach dieser Antwort gesucht und bin mir nicht sicher, ob ich gerne auf das letzte Dokument des Arrays zugreife. Ich habe jedoch eine alternative Lösung. Die Methode m['b'].push gibt eine ganze Zahl zurück, 1 oder 0 - ich gehe davon aus, dass dies auf dem Erfolg des Pushs basiert (in Bezug auf die Validierung). Um jedoch Zugriff auf das Unterdokument und insbesondere die _id des Unterdokuments zu erhalten, sollten Sie den create verwenden Methode zuerst, dann push .

Der Code lautet wie folgt:

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

Was passiert ist, dass, wenn Sie das Objekt entweder an die push- oder die create-Methode übergeben, die Schemaumwandlung sofort erfolgt (einschließlich Dinge wie Validierung und Typumwandlung) – das bedeutet, dass dies der Zeitpunkt ist, zu dem die ObjectId erstellt wird; nicht, wenn das Modell wieder in Mongo gespeichert wird. Tatsächlich weist Mongo Subdokumenten nicht automatisch _id-Werte zu, dies ist eine Mongoose-Funktion. Mongoose create ist hier dokumentiert:create docs

Sie sollten daher auch beachten, dass, obwohl Sie eine Subdocument _id haben, diese noch nicht in Mongo ist, bis Sie sie speichern, also seien Sie jeder DOCRef-Aktion überdrüssig, die Sie möglicherweise durchführen.