2017-08-16 2 views
0

例:25レコードのコレクションがある場合。私はdb.collection.find(indexOf[14]).limit(4)のようなものを使用したいと思いますが、これは可能ではないと思いますが、基本的にはこの時点でmongoクエリで開始し、次のnレコードを探しています。スキップせずに特定のインデックスから他の特定のインデックスに開始するようにmongoデータベースを照会する方法はありますか?

indexOfが最良の例ではないかもしれませんが、基本的には特定のインデックスの検索を開始し、次のnレコードを見つけて返したいと思います。

私はあなたが.skip()メソッドを使用できることは知っていますが、ドキュメントで述べたように、それを使用するのはCPU上では悪いです。だから私はここでそれを使いたくない。

答えて

0

これによると:https://scalegrid.io/blog/fast-paging-with-mongodb/

あなたはあなたの例のようなものを使用します。

users = db.users.find({'_id'> last_id}).limit(10); 

は、あなたが試した何本か?

+0

をここでの問題は、私のidのは、完全に無作為化されているということです。そして非常に長い弦。 –

+0

私は理解します。 '.skip()'がCPU上で悪いために使いたくないと言うと、ページングしようとしているデータの量はどれくらいですか?それは巨大な結果セットですか?とにかく数千もの結果のリストをユーザーに返すつもりはないのですか? .skip()がCPUを大量に使用しているという警告は問題ではないかもしれません。 –

+0

これは、何千も何千もの大企業のためのプロジェクトです。 –

0

$skipを使用することをおすすめします。あなたのページ機能がシステムの中核となっていなければ、ユーザーはいつもそれを使用することになり、膨大な数のクライアントや文書を扱わなければ、$skipは深刻な問題を引き起こすことはありません。

あなたが本当にそのトピックについて心配している場合は、ベンチマークを実行し、CPU /応答時間が何であるかを見てください。

また、ここでの応答を確認してください。Slow pagination over tons of records in mongodb

関連する問題