この記事では、主に mongoDB の pagination を実装する 2 つの方法を詳しく紹介します。興味のある方は、limit()、skip()、sort()、これら 3 つの関数を組み合わせてページング クエリを実行します。
以下は私のテストデータですdb.test.find().sort({"age":1});
最初のメソッド
最初のページのデータをクエリします: db .test.find().sort({"age":1}).limit(2);
2 ページ目のデータをクエリします: db.test.find().sort({"age" :1}).skip(2).limit(2);
他のページ数などをクエリします。 。 。
2 番目のメソッド最初のページのデータをクエリします: db.test.find().sort({"age":1}).limit(2);
上記の番号に従います同じ方法です。
2 番目のページのデータをクエリします: これは、最初のページの最後のレコードの値を取得し、前のレコードを除外して新しいレコードを取得します要約すると、データが非常に大きい場合は、最初の方法を使用できます。結局のところ、データの量が比較的大きい場合は、2 番目の方法を使用することをお勧めします。 Skip はレコードをスキップしすぎるため、効率が少し低くなります慎重に検討した結果、2 番目の方法は確かにページジャンプには適しておらず、効率はあまり高くありません大量のデータの場合、特別な処理を行う必要があります。
次の 2 つの方法があります
これは、Baidu のページング処理に似ています。最初の 700 レコードなので、パフォーマンスの問題を考慮する必要はありません。結局のところ、ほとんどの人は最初の 10 ページを見るだけで必要なものを見つけることができます
レコードの合計数は推定できるはずです。見つかったこれらのレコードの割合に基づいて
2番目の一方通行
これと同じように、各ページに 10 個のレコードがあると仮定します
id page
1 1
2 1。 。 。 10 1
11 2
12 2
。 。 。 。
20 2
このようにして、最初のページを確認すると、直接10個のデータを取得することができます
データが1億個あり、1つのレコードIDが4バイト、その他の情報が1バイトを占有し、 1 つのレコードは 5 バイトを占有します
1 0000 0000 *5/(1024*1024)=476MB
このアプローチでは、一般に、データベースのクエリ時間のほとんどがデータベースへの接続に費やされます。キャッシュによりクエリが大幅に高速化されます
以上がmongoDB はページングをどのように実装しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。