MongoDB 集約フレームワークを使用すると、$group
機能がボトルネックであることは明らかです。いくつかの検索クエリで使用explain()
することにより、インデックスを調整してテーブルスキャンを大幅に減らすことができますが、フィールドで並べ替えを行っても、以前に発生したことは$group
考慮されていないようです。に。 $sort
$group
単純に結果セットを減らす以外に、$group
関数のパフォーマンスを向上させる実用的な方法はありますか? $group
私はほとんどこの種の利点を利用して、自分のアプリケーションで実行したくなりますが、フレームワークを使用したエレガントでパフォーマンスの高いソリューションが必要です。
$match
からの結果セットが増加するにつれて、$group
時間も増加することに気付きました。
私の文書は基本的にこのようなものです
{
a: (String)
b: (String)
}
次のpipeline
ような
$match :{ a : 'frank'}
$sort : { b : 1 }
$group : { _id : { $b : b }}
グループに到達するまでにデータがメモリにロードされ、フィールドにインデックスが付けられているため、数千のレコードをメモリにロードするのにそれほど時間がかからないはずなので、私には驚くべきことです。そうではありませんか?
$sort
全体的なパフォーマンスには影響がないようです。のパフォーマンスを向上させるために、パイプラインの以前の機能と同様にインデックスを使用する方法はあります$group
か? また、$group
前の関数の結果セット内にとどまりますか、それともテーブル全体のスキャンに戻りますか (私はかなり確信しています、またはそうでないことを願っています)