sql >> Databáze >  >> NoSQL >> MongoDB

najít ID nejnovějšího dílčího dokumentu vloženého do mongoose

Tuto odpověď jsem také hledal a nejsem si jistý, zda se mi líbí přístup k poslednímu dokumentu pole. Mám však alternativní řešení. Metoda m['b'].push vrátí celé číslo, 1 nebo 0 - předpokládám, že je to založeno na úspěchu push (z hlediska ověření). Chcete-li však získat přístup k vnořenému dokumentu, a zejména k _id vnořeného dokumentu, měli byste použít create nejprve metoda, poté push .

Kód je následující:

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

Dochází k tomu, že když objekt předáte buď metodě push nebo create, přetypování schématu nastane okamžitě (včetně věcí jako ověření a přetypování) – to znamená, že toto je čas, kdy je vytvořeno ObjectId; ne, když je model uložen zpět do Mongo. Mongo ve skutečnosti automaticky nepřiřazuje hodnoty _id vnořeným dokumentům, jedná se o mongoose funkci. Vytvoření Mongoose je zdokumentováno zde:Create docs

Měli byste si proto také uvědomit, že i když máte vnořený dokument _id - ještě není v Mongu, dokud ho neuložíte, takže buďte unavení z jakékoli akce DOCRef, kterou byste mohli podniknout.



  1. Zaručuje Stackexchange.Redis vypalování a zapomínání doručení?

  2. MongoDB Object.bsonSize()

  3. Vyberte vnořená pole v mongo db

  4. Jak číst více sad uložených na Redis pomocí nějakého příkazu nebo skriptu LUA