MongoDB でのページング
この記事では、MongoDB のページネーションについて詳しく説明します。 さらに、MongoDB でのページネーションの使用と動作についても簡単に説明します。
最後に、MongoDB でページングを行うさまざまな方法について説明します。
この記事の目次は次のとおりです。
- MongoDB でのページング
- MongoDB でのページネーションの作業
- MongoDB でのページングのさまざまな方法
MongoDB でのページング
MongoDB は、コレクション内に格納された JSON タイプのドキュメントでデータを管理する一般的な NoSQL データベースです。 時には少数のドキュメントのみを復元する必要がある場合もあれば、クリーンな出力が必要な場合もあります。
読みやすい出力を提供するために、MongoDB ではページネーション現象が利用されています。 ページネーションは、膨大な量の整理されていないデータをページ形式で表示する方法です。
MongoDB の通常の手法と比較すると、ページネーションの助けを借りて、結果がより速くフェッチされる場合があります。
MongoDB のページネーションは、データを記述するための効果的な手法を提供し、ページングを高速かつ効率的にします。 MongoDB では、多くのデータをすばやく調べることができます。
ページング実装の重要なアプリケーションは、データベース レベルで skip
、limit
、および sort
を使用することです。 ただし、limit
と skip
をデータベース レベルで使用すると、さまざまな問題が発生します。
ページネーションは、前のページを利用して次のページを取得するプロセスです。 MongoDB では、コレクション フィールドにインデックスを作成して、データ アクセスを高速化できます。
ページネーションの方法:
skip()
とlimit()
メソッドの使用find()
とlimit()
メソッドの使用$slice
メソッドを使用したページネーション- インデックス作成によるページネーション
sort()
メソッドによるページネーション- 範囲クエリを使用したページネーション
MongoDB でのページネーションの作業
-
MongoDB はドキュメントベースのデータベースであるため、MongoDB を使用する際のページネーションは非常に重要なユースケースです。
-
MongoDB で応答をページ付けすると、ドキュメントの結果は明白で、理解しやすい形式になります。
-
MongoDB データベースをページ分割するために、次のシナリオが使用されています。
3.1. バッチ ファイルを処理する
3.2. ユーザー画面またはインターフェースに多数の結果セットを表示するには -
MongoDB のクライアントおよびサーバー側のページネーションは、他のオプションに比べて非常に高価であるため、考慮できません。
-
データベース レベルでページネーションを処理しており、データベース レベルでページネーションを行うようにデータベースを最適化しています。
MongoDB データベースをページ分割するさまざまな方法
Find()
と limit()
メソッドの使用
MongoDB の limit
メソッドは、ドキュメントの最大量を示します。 ページ数は整数で指定され、クエリが制限に達すると、結果が出力されます。
MongoDB で limit
メソッドを使用するには、以下に示す構文を使用します。
db.collection-name.find().limit()
構文内のコレクション名は、このメソッドが適用されるコレクションの名前に置き換える必要があります。 find()
関数はすべてのドキュメントを返しますが、limit()
メソッドは返されるドキュメントの数を制限するために使用されます。
たとえば、次のコマンドは students
コレクションの最初の 3つのアイテムのみを公開します。
db.students.find().limit(3).pretty()
skip()
メソッドで limit()
を使用する
MongoDB のページネーション現象を理解するには、limit
メソッドを skip()
関数と組み合わせて使用します。 前述のように、以前の制限手法では、コレクションのドキュメントの最大数が表示されます。
対照的に、skip()
メソッドは、コレクションで提供されるドキュメントの数を無視するのに役立ちます。 また、limit()
および skip()
メソッドを使用すると、結果がより洗練されます。
limit()
および skip()
メソッドを使用するための構文は次のとおりです。
db.Collection-name.find().skip().limit()
skip()
と limit()
は数値のみを取ります。
以下にリストされているコマンドは、次のアクションを実行します。
skip(2)
- このメソッドは、students
コレクションから最初の 2つのドキュメントをスキップします。limit(3)
- 最初の 2つのドキュメントをスキップした後、次の 3つのドキュメントが印刷されます。
db.students.find().skip(2).limit(3)
範囲クエリの使用
名前が示すように、このクエリは任意のフィールドの範囲に基づいてドキュメントを処理します。 範囲クエリを使用するための構文は次のとおりです。
db.collection-name.find().min({_id: }).max({_id: })
次の例では、students
コレクション内のドキュメントのうち、3
と 5
の間にあるドキュメントを表示します。 出力は、min()
関数の value(3)
で始まり、max()
メソッドの value(5)
の前で終了することがわかります。
db.students.find().min({_id: 3}).max({_id: 5})
sort()
メソッドの使用
sort()
関数を使用して、コレクション内のドキュメントを並べ替えます。 レイアウトは昇順または降順で配置できます。
sort
メソッドを使用するための構文は次のとおりです。
db.collection-name.find().sort({<field-name>: <1 or -1>})
フィールド名は、そのフィールドに基づいてドキュメントを整理するための任意のフィールドにすることができ、昇順の配置には 1
を、降順の配置には -1
を挿入できます。
上記で使用したコマンドは、students
コレクション内のドキュメントを _id
フィールドの降順で並べ替えます。
db.students.find().sort({id: -1})
$slice
演算子の使用
find メソッドでは、$slice
演算子を使用して、すべてのドキュメントの 1つのフィールドからいくつかの要素を切り取り、それらのドキュメントのみを表示します。
db.collection-name.find({<field-name>, {$slice: [<num>, <num>]}})
この演算子の配列フィールドを持つ別の staff
コレクションを作成しました。 次のコマンドは、MongoDB の $slice
演算子を使用して、staff
コレクションの random
フィールドから 2つの値の数を表示します。
次のコマンドでは、1
は乱数フィールドの最初の値をスキップし、2
はスキップ後の次の 2
値を表示します。
db.staff.find({},{random: {$slice: [1,2]}})
createIndex()
メソッドの使用
インデックスは、ドキュメントを最短時間で取得するために不可欠です。 フィールドにインデックスが形成されると、クエリはコレクション全体を走査するのではなく、インデックス番号を使用してフィールドを識別します。
以下は、インデックスを作成するための構文です。
db.collection-name.createIndex({<field-name>: <1 or -1>})
<field-name>
は任意のフィールドにすることができますが、順序の値は常に同じです。 このコマンドは、students
コレクションの name
フィールドに昇順のインデックスを作成します。
db.students.createIndex({name: 1})
MongoDB は、ドキュメントの保存と検索を独自にサポートしていることでよく知られています。 データベース管理者は、MongoDB のページネーションを使用して、ドキュメントをわかりやすく魅力的な形式で取得できます。
この記事では、ページング現象が MongoDB でどのように機能するかを示しました。 MongoDB には、このための多数のメソッドと演算子があり、ここで例を挙げて詳しく説明します。
各メソッドには、データベース コレクションからドキュメントを取得するための独自の手法があります。 これらのオプションの中から、ニーズに最も適したものを選択できます。