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

Mongodbクエリの実行に時間がかかりすぎる

    クエリを最適化するために行うことはたくさんあります。私が試すこと:

    • Anthony Winzletがコメントで述べたように、最初のステージとして可能な限り$matchステージを使用します。このようにして、次の段階に渡されるドキュメントの数を減らし、インデックスを使用できます。

    • 3.6以上のmongoバージョンを使用していると仮定して、「let / pipeline」構文(ここを参照 )。このようにして、ルックアップパイプラインの$ matchステージに「外部フィルター」(「customer_info.status」:{$ ne:9}、「model_info.status」:{$ ne:9})を統合できます。右のフィールド/コレクションにインデックスを付けると、$lookupステージで時間/メモリを獲得できます。

    • 次のステージに渡されるドキュメントの数を制限するために、できるだけ遅くステージを巻き戻します。

    集約パイプラインがどのように機能するかを理解することが重要です。各ステージはデータを受信し、その処理を実行して、データを次のステージに渡します。したがって、パイプラインに渡されるデータが少ないほど、クエリは高速になります。




    1. 配列に一致するものが見つからない場合は、最初の要素を返します

    2. レコード内のフィールド数に基づくMongodbクエリ

    3. mongoはjoda日時にクエリを検索します

    4. 過去24時間のドキュメントのマングースクエリ、1時間に1つのドキュメントのみ