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

Zapisywanie do MongoDB w pętli

To dlatego, że save jest w rzeczywistości operacją we/wy, która jest asynchroniczna. Teraz for pętla jest w rzeczywistości synchronizowana. Pomyśl o tym w ten sposób:Twój silnik JS seryjnie wykonuje każdą linię, którą widzi. Załóżmy, że te linie są utrzymywane jedna po drugiej na stosie. Jeśli chodzi o save , trzyma go z boku na innym stosie (ponieważ jest to operacja we/wy, a zatem zabiera trochę czasu) i kontynuuje z resztą pętli. Okazuje się więc, że silnik sprawdzi ten nowy stos dopiero po ukończeniu każdej linii na starszym. Dlatego wartość zmiennej cats będzie ostatnim elementem tablicy. W ten sposób zapisywana jest tylko ostatnia wartość.

Aby zwalczyć tę tragedię, możesz użyć wielu metod:

  1. Zamknięcia – Więcej informacji
  2. Obietnice – Więcej informacji . Istnieje słodka biblioteka co obiecuje kierowcy mongo, aby ułatwić pracę.
  3. Generatory itp. — Czytaj więcej . Nie jest jeszcze gotowy na primetime.

Uwaga do punktu 2 — nie jestem współtwórcą projektu, ale pracuję z autorem. Korzystam z biblioteki od ponad roku i jest szybka i niesamowita!



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Architektura do rejestrowania dużej ilości danych, bazy danych czy pliku?

  2. Przechowuj obrazy w Mongodb, serwuj je za pomocą Nodejs

  3. projekcja nie działa z zapytaniem wyszukiwania

  4. MongoDB :gdzie jest granica między kilkoma a wieloma?

  5. Jak tworzyć indeksy bez rozróżniania wielkości liter w MongoDB?