クエリパフォーマンス上の奇妙なビット...私は、ドキュメントの総数を行うクエリを実行する必要がありますまた、制限され、オフセットすることができます結果セットを返すことができます。マングース制限/オフセットとカウントクエリ
だから、最初にすべての57件の文書のクエリ(配列として返さ)があり、私は合計で57件の文書を持っており、ユーザーは、私がこれを行うための2つの方法を考えることができる20
によってオフセット10件の文書を望んでいますarray.sliceを使用して、必要なドキュメントを返します。 2番目のオプションは、mongoのネイティブ 'count'メソッドを使用する最初の2つのクエリを実行し、mongoのネイティブ$ limitおよび$ skipアグリゲータを使用して2番目のクエリを実行することです。
拡大率はどれくらいになると思いますか? 1つのクエリですべてを実行するか、2つのクエリを別々に実行しますか?
編集:
// 1 query
var limit = 10;
var offset = 20;
Animals.find({}, function (err, animals) {
if (err) {
return next(err);
}
res.send({count: animals.length, animals: animals.slice(offset, limit + offset)});
});
// 2 queries
Animals.find({}, {limit:10, skip:20} function (err, animals) {
if (err) {
return next(err);
}
Animals.count({}, function (err, count) {
if (err) {
return next(err);
}
res.send({count: count, animals: animals});
});
});
私はMongooseについては確信していますが、PHPのデフォルトの 'count()'関数は、limitとskipの1つのクエリを実行してカウントを取得するように指示されていない限り、 'limit'または' skip'を考慮しませんおそらく最も性能の高いソリューションです。しかし、そこにあるものを数えるために2つのクエリを実行しないと、どのようにして57個のドキュメントがありますか?あなたは変わらない静的な数字を持っていますか?そうでない場合は、スキップしてからカウントを制限する必要があります。 – Sammaye
申し訳ありません、Mongoのネイティブカウントメソッド 'db.collection.find().count();' –
leepowell
を使用しています。申し訳ありませんが、私はあなたの質問を誤解しました。うーん、実際には、どちらが良いだろうか分からない、57 docsのように常にあなたの結果セットは本当に低いでしょうか?そうであれば、クライアント側のスライスは1分の1になります。 – Sammaye