sql >> データベース >  >> NoSQL >> MongoDB

mongoDBの同じAPIで同じドキュメントを並行してクエリする

    並列バージョンでより多くのコードを実行しているようです

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

    並列バージョンの場合、関数呼び出し(ContentRepo.geBySkillIdWithSourceFiltered )ループ内。だから遅いです。

    Promiseを並行して実行することに関する質問:

    Promise.allのように 、Promise.allSettled 複数の約束を待ちます。それらがどの順序で解決するか、または計算が並行して実行されているかどうかは関係ありません。どちらも並行性を保証するものでも、その逆も保証するものではありません。彼らの仕事は、渡されたすべての約束が確実に処理されるようにすることです。

    したがって、promise実行の並列性を手動で保証することはできません

    これは本当に興味深い記事 です。 並列処理とPromise.Allの説明 また、ブラウザのNodejs APIが、並列処理の点でコンピュータにインストールされているNodejsAPIとどのように異なるか。

    記事の結論の抜粋は次のとおりです。

    サイドノート:

    微妙な違いが1つあります:

    1. Promise.all:渡されたすべてのpromiseが解決された場合にのみ解決されます。それ以外の場合は、最初に拒否されたpromiseエラーで拒否されます。

    2. Promise.allSettled:解決された約束と拒否された約束に関する情報を含む配列で常に解決されます。




    1. Websocketの切断された接続呼び出しが失敗しました

    2. MongoDB:ドキュメントサイズはクエリのパフォーマンスに影響しますか?

    3. MongoDB-$text演算子でフレーズまたは単語を検索

    4. マングース:ObjectIdsでaddToSetを使用すると、孤立したIDになります