MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

znajdź identyfikator ostatniego poddokumentu wstawionego w manguście

Szukałem również tej odpowiedzi i nie jestem pewien, czy podoba mi się dostęp do ostatniego dokumentu tablicy. Mam jednak alternatywne rozwiązanie. Metoda m['b'].push zwróci liczbę całkowitą, 1 lub 0 - zakładam, że jest to oparte na sukcesie push (pod względem walidacji). Jednak w celu uzyskania dostępu do poddokumentu, a w szczególności do _id poddokumentu - należy użyć create najpierw metodę, potem push .

Kod wygląda następująco:

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

Dzieje się tak, że gdy przekazujesz obiekt do metody push lub create, rzutowanie schematu następuje natychmiast (w tym takie rzeczy jak walidacja i rzutowanie typu) - oznacza to, że jest to czas, w którym tworzony jest ObjectId; nie wtedy, gdy model zostanie zapisany z powrotem w Mongo. W rzeczywistości mongo nie przypisuje automatycznie wartości _id do dokumentów podrzędnych, jest to cecha mangusty. Tworzenie Mongoose jest udokumentowane tutaj:tworzenie dokumentów

Powinieneś również zauważyć, że nawet jeśli masz poddokument _id - nie ma go jeszcze w Mongo, dopóki go nie zapiszesz, więc uważaj na wszelkie działania DOCRef, które możesz podjąć.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:unikalny klucz w osadzonym dokumencie

  2. Mongodb:nie udało się połączyć z serwerem przy pierwszym połączeniu

  3. Mongoose:ścieżka błędu walidacji jest wymagana

  4. Jak naprawić mój mongodb?

  5. Najlepsza praktyka w utrzymywaniu sesji MGO