7

Mongooseでオプションのフィルターオプションを使用してページ付けを行おうとしています。

私は、データベースに対して2つのクエリを実行することにより、ページネーションを処理しています。1つはドキュメントの数を取得し、もう1つは実際にデータを取得します。ページネーションがなくても、フィルターは正しく機能します。ドキュメントの数とデータのページ(現在のページに表示されるサブセット)の両方をデータベースから返す良い方法があるのだろうかと思っていました。これを行うためにクエリを設定するにはどうすればよいですか?

現在、2つの別々の呼び出しを行っています。

Model.find(filter, selectPaths, {limit: limit, skip: skip}, callback);
Model.count(filter, another_callback);

必要なすべてのデータを取得するには、単に2回呼び出す必要がありますか?

4

1 に答える 1

6

私は自由を取り、他の答えにリンクします:遠隔ページネーションとmongodbとnode.jsによるページネーション

簡単な答え:データセットが小さい(1000ドキュメント未満など)場合を除いて、スキップ/制限を使用しないでください。フェッチするページが大きいほど、パフォーマンスは低下します。範囲クエリ(field: {$gt: value})を使用すると、はるかに効率的です(もちろん、インデックスが作成されている場合)。

いいえ、1回のクエリで合計数とデータの一部を返すことはできません。

于 2012-09-04T08:44:39.533 に答える