Overview
このガイドでは、次のメソッドを find メソッドに連結して、読み取り操作から返されるドキュメントを指定する方法を学習できます。
limit : クエリから返されるドキュメントの最大数を指定します
sort : 返されるドキュメントのソート順序を指定します
skip : クエリ結果を返す前にスキップするドキュメントの数を指定します
サンプル データ
このガイドの例では、Atlasサンプルデータセット の sample_restaurantsデータベースの restaurantsコレクションを使用します。Rubyアプリケーションからこのコレクションにアクセスするには、Atlas クラスターに接続する Mongo::Clientオブジェクトを作成し、次の値を database 変数と collection 変数に割り当てます。
database = client.use('sample_restaurants')collection = database[:restaurants]MongoDB Atlasクラスターを無料で作成して、サンプルデータセットをロードする方法については、MongoDBを使い始めるガイドを参照してください。
Limit
読み取り操作から返されるドキュメントの最大数を指定するには、操作に limit オプションを適用します。このオプションは、limit setter メソッドを find メソッドに連結することで設定できます。
次の例では、 cuisineフィールドの値が'Italian'であるすべてのレストランを検索し、結果を5ドキュメントに制限します。
filter = { cuisine: 'Italian' }collection.find(filter) .limit(5) .each { |doc| puts doc }Tip
上記の例では、データベース内の自然な順序に従ってクエリに一致する最初の 5 つのドキュメントが返されます。 次のセクションでは、指定された順序でドキュメントを返す方法について説明します。
Sort
指定した順序でドキュメントを返すには、 読み取り操作に sort オプションを適用します。このオプションは、sort setter メソッドを find メソッドに連結することで設定できます。
sort を呼び出すときに、フィールドを渡して、結果を と並べ替え方向で並べ替えます。並べ替え方向の値が 1 の場合、値は最低から最高の順にソートされ、-1 の値は最高から最低の順にソートされます。
次の例では、 cuisineフィールド値が 'Italian' であるすべてのドキュメントを、nameフィールド値の昇順でソートして返します。
filter = { cuisine: 'Italian' }collection.find(filter) .sort(name: 1) .each { |doc| puts doc }スキップ
クエリ結果を返す前に指定した数のドキュメントをスキップするには、読み取り操作に skip オプションを適用します。このオプションは、skip setter メソッドを find メソッドに連結することで設定できます。
次の例では、 boroughフィールドの値が'Manhattan'であるすべてのドキュメントを返し、最初の10ドキュメントをスキップします。
filter = { borough: 'Manhattan' }collection.find(filter) .skip(10) .each { |doc| puts doc }制限、ソート、スキップの組み合わせ
limit、sort、skip メソッドを単一の find メソッド呼び出しに連鎖させることができます。 これにより、 読み取り操作から返されるソートされたドキュメントの最大数を設定でき、返される前に指定された数のドキュメントをスキップできます。
次の例では、 cuisine の値が 'Italian' である 5 ドキュメントが返されます。 結果は nameフィールド値の昇順でソートされ、最初の 10 ドキュメントはスキップされます。
filter = { cuisine: 'Italian' }collection.find(filter) .limit(5) .skip(10) .sort(name: 1) .each { |doc| puts doc }注意
これらのメソッドを呼び出す順序によって、返されるドキュメントは変更されません。Rubyドライバーは、ソート操作を最初に実行し、次にスキップ操作を実行し、次に制限操作 を実行するように呼び出しの順序を自動的に並べ替えます。
詳細情報
ドキュメント検索の詳細については、ドキュメントの検索ガイドを参照してください。
クエリの指定の詳細については、「 クエリの指定」ガイドを参照してください。
API ドキュメント
find メソッドとそのオプションについて詳しくは、APIドキュメント を参照してください。