5.1バージョン の新機能。:
クエリ結果を検索して返すために、MongoDB は次のいずれかのクエリ エンジンを使用します。
クラシック クエリ エンジン
スロットベースのクエリ実行エンジン。MongoDB 5.1 以降の一部のクエリで使用できます。
MongoDB はクエリを実行するためのエンジンを自動的に選択します。 特定のクエリのエンジンを手動で指定することはできません。
MongoDB は、特定の条件が満たされたクエリのサブセットに対して スロットベースのクエリ実行エンジンを 使用できます。 ほとんどの場合、スロットベースの実行エンジンは、従来のクエリ エンジンと比較してパフォーマンスが向上し、CPU とメモリのコストが削減されます。
MongoDB は、スロットベースのクエリ実行エンジンに適していないクエリにはクラシック エンジンを使用します。
注意
バージョン 7.0.17 以降、スロットベースのクエリ実行エンジンは、7.0 のパッチ バージョンではデフォルトで有効ではなくなりました。スロットベースのクエリ実行エンジンを使用するクエリを使用する場合は、バージョン 8.0 にアップグレードしてください。デフォルトで有効になっている 。
スロットベースの実行エンジンに適したクエリ
MongoDB は、クエリごとにスロットベースの実行エンジンを使用するかどうかを判断し、クエリに存在する各演算子と式のサポートを考慮します。 たとえば、スロットベースの実行エンジンを使用する 2 つの一般的なパイプラインは、 $group } ステージまたは$lookupステージで集計されます。 ただし、スロットベースの実行エンジンのサポートはバージョンに固有であり、積極的に変更されます。
クエリがスロットベースの実行エンジンを使用したかどうかを確認するには、「 使用されたクエリ エンジンの決定 」セクションを参照してください。
どのクエリ エンジンが使用されたかを特定する
クエリの実行にクラシック エンジンとスロットベースの実行エンジンのどちらが使用されたかを判断する方法がいくつかあります。
クエリ説明の結果の確認
クエリの explain 結果は、使用されたクエリ エンジンによって異なります。 たとえば、スロットベースの実行エンジンを使用して実行されたクエリの explain 結果にはexplain.queryPlanner.winningPlan.slotBasedPlanフィールドが含まれます。
クエリ エンジン間の explain 結果の違いの詳細については、 explain の出力構造 を参照してください。
スロー クエリ ログの確認
低速オペレーションログメッセージには、クエリを実行したクエリエンジンを示す queryFramework フィールドが含まれます。
queryFramework: "classic"は、クラシック エンジンでクエリが実行されたことを示します。queryFramework: "sbe"はスロットベースのクエリ実行エンジンでクエリが実行されたことを示します。
スロットベースの実行エンジンを使用したクエリのログ メッセージの例については、「低速操作 」を参照してください。