MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

намерете идентификатора на последния поддокумент, вмъкнат в mongoose

Търсих и този отговор и не съм сигурен, че ми харесва да влизам в последния документ от масива. Имам обаче алтернативно решение. Методът m['b'].push ще върне цяло число, 1 или 0 - предполагам, че това се основава на успеха на натискането (по отношение на валидирането). Въпреки това, за да получите достъп до поддокумента и по-специално до _id на поддокумента - трябва да използвате create първо метод, след това push .

Кодът е както следва:

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

Това, което се случва е, че когато предадете обекта към метода push или create, прехвърлянето на схемата се извършва незабавно (включително неща като валидиране и прехвърляне на тип) - това означава, че това е времето, в което се създава ObjectId; не когато моделът е запазен обратно в Mongo. Всъщност mongo не присвоява автоматично стойности на _id на поддокументи, това е функция на мангуста. Създаването на Mongoose е документирано тук:създаване на документи

Ето защо трябва също да отбележите, че въпреки че имате поддокумент _id - той все още не е в Mongo, докато не го запазите, така че не се уморявайте от всяко действие на DOCRef, което може да предприемете.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Изберете Групиране по брой и отделен брой в същата заявка за mongodb

  2. Използвайте mongoexport с --query за ISODate

  3. MongoDB Агрегирана сума за всеки ключ в поддокумент

  4. Защо драйверът на възел MongoDB генерира унищожени грешки в пула на инстанции?

  5. Как да управлявам MongoDB връзки в уеб приложение Node.js?