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

Odpytywanie tego samego dokumentu równolegle w tym samym API w mongoDB

Wygląda na to, że używasz więcej kodu w wersji równoległej

// The normal version
let normal = await ContentRepo.geBySkillIdWithSourceFiltered(
    [chosenSkillsArr[0].sid!],
    readContentIds,
    body.isVideoIncluded,
    true,
    true
);


// The code inside the parallel version:
chosenSkillsArr.map(async (skill: IScrapeSkillDocument) => {
        const result = await ContentRepo.geBySkillIdWithSourceFiltered(
            [skill.sid!],
            readContentIds,
            body.isVideoIncluded,
            true,
            true
        );
    })
[chosenSkillsArr[0].sid!], vs  chosenSkillsArr.map()

W przypadku wersji równoległej umieszczasz wywołanie funkcji (ContentRepo.geBySkillIdWithSourceFiltered ) wewnątrz pętli. Dlatego jest wolniejszy.

W przypadku pytania o równoległe uruchamianie obietnic:

Jak Promise.all , Promise.allSettled czekaj na wiele obietnic. Nie dba o to, w jakiej kolejności są rozwiązywane, ani czy obliczenia działają równolegle. Oba nie gwarantują współbieżności ani odwrotnie. Ich zadaniem jest zapewnienie, że wszystkie złożone mu obietnice zostaną zrealizowane.

Nie możesz więc ręcznie zagwarantować równoległości realizacji obietnicy

Oto naprawdę interesujący artykuł wyjaśnienie równoległości i Promise.All i jak przeglądarka Nodejs API różni się od Nodejs API zainstalowanej na twoim komputerze pod względem równoległości.

Oto fragment podsumowania artykułu:

Uwaga boczna:

Jest jedna subtelna różnica:

  1. Promise.all:Rozwiązuje się tylko wtedy, gdy wszystkie przekazane do niego obietnice zostaną rozwiązane, w przeciwnym razie zostanie odrzucone z pierwszym odrzuconym błędem obietnicy.

  2. Promise.allSettled:zawsze zostanie rozwiązany za pomocą tablicy zawierającej informacje o rozwiązanych i odrzuconych obietnicach.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB z poddokumentami limitu Mongoose

  2. Jak dołączyć do dwóch dodatkowych kolekcji z warunkami

  3. Obsługa rozłączeń/ponownych połączeń MongoDB z węzła

  4. Wzorzec modułu JavaScript z wywołaniem zwrotnym Ajax

  5. Upuszczenie kolekcji Mongo nie powoduje wyczyszczenia miejsca na dysku