sql >> Database >  >> NoSQL >> MongoDB

Hetzelfde document parallel opvragen in dezelfde API in mongoDB

Het lijkt erop dat u meer code gebruikt in de parallelle versie

// 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()

Voor de parallelle versie plaatst u de functieaanroep (ContentRepo.geBySkillIdWithSourceFiltered ) in een lus. Daarom is het langzamer.

Voor de vraag over het parallel uitvoeren van beloften:

Like Promise.all , Promise.allSettled wachten op meerdere beloften. Het maakt niet uit in welke volgorde ze worden opgelost, of dat de berekeningen parallel lopen. Ze garanderen allebei geen gelijktijdigheid, noch het tegenovergestelde. Het is hun taak om ervoor te zorgen dat alle beloften worden nagekomen.

U kunt dus niet handmatig de parallelliteit van de uitvoering van de belofte garanderen

Hier is een echt interessant artikel uitleg over parallellisme en Promise.All en hoe browser Nodejs API verschilt van Nodejs API die op uw computer is geïnstalleerd in termen van parallellisme.

Hier is het uittreksel van de conclusie van het artikel:

Kanttekening:

Er is één subtiel verschil:

  1. Promise.all:lost alleen op wanneer alle beloften die aan het zijn doorgegeven, worden opgelost, anders zal het worden afgewezen met de eerste afgewezen beloftefout.

  2. Promise.allSettled:Wordt altijd opgelost met een array met informatie over opgeloste en afgewezen beloften.




  1. MongoDB als bestandsopslag

  2. Zoeken naar de waarde van een veld in MongoDB zonder het expliciet een naam te geven

  3. Hoe het voorkomen van elke waarde in de array te tellen?

  4. MongoDB $not Aggregation Pipeline Operator