返すドキュメントを指定する
Overview
このガイドでは、次のメソッドを Find()
メソッドに連結して、読み取り操作から返されるドキュメントを指定する方法を学習できます。
limit() : クエリから返されるドキュメントの最大数を指定します
Sort() : 返されるドキュメントのソート順序を指定します
skip() : クエリ結果を返す前にスキップするドキュメントの数を指定します
サンプル データ
このガイドの例では、 Atlas サンプル データセットのsample_restaurants
データベースのrestaurants
コレクションを使用します。 MongoDB Atlas クラスターを無料で作成して、サンプル データセットをロードする方法については、 「 Atlas を使い始める 」ガイドを参照してください。
このページの例では、コレクション内のドキュメントのモデルとして次の Restaurant
クラスを使用します。
[ ]public class Restaurant { public ObjectId Id { get; set; } [ ] public string Name { get; set; } [ ] public string Cuisine { get; set; } }
Limit
読み取り操作から返されるドキュメントの最大数を指定するには、IFindFluent
インターフェースが提供する Limit()
メソッドを使用します。 Find()
メソッドを呼び出した後、Limit()
メソッドを連鎖させて操作の動作を変更します。
次の例では、 cuisine
フィールドの値が"Italian"
であるすべてのレストランを検索し、結果を5
ドキュメントに制限します。
var filter = Builders<Restaurant>.Filter.Eq("cuisine", "Italian"); var results = collection.Find(filter).Limit(5).ToList(); foreach (var result in results) { Console.WriteLine(result.Name); }
V & T Restaurant Mimis Restaurant & Bar Venice Restaurant Areo Restaurant Tre Giovani Pizza & Pasta
Tip
上記の例では、データベース内の自然な順序に従ってクエリに一致する最初の 5 つのドキュメントが返されます。 次のセクションでは、指定された順序でドキュメントを返す方法について説明します。
Sort
指定した順序でドキュメントを返すには、IFindFluent
インターフェースが提供する Sort()
メソッドを使用します。 Find()
メソッドを呼び出した後、Sort()
メソッドを連鎖させて操作の動作を変更します。
Sort()
を呼び出すときは、並べ替え定義をパラメータとして渡す必要があります。並べ替え定義を作成するには、Builders<T>.Sort.Ascending()
メソッドを使用して最低値から最高値の順にソートするか、Builders<T>.Sort.Ascending()
メソッドを使用して最高値から最低値の順にソートします。これらのメソッドはどちらも、ソートするフィールド名をパラメーターとして受け取ります。これらのメソッドを連結して、返されたドキュメントを複数のフィールドで並べ替えることができます。
次の例では、cuisine
フィールド値が "Italian"
であるすべてのドキュメントを、name
フィールド値の昇順でソートして返します。
var filter = Builders<Restaurant>.Filter.Eq("cuisine", "Italian"); var sort = Builders<Restaurant>.Sort.Ascending("name"); var results = collection.Find(filter).Sort(sort).ToList(); foreach (var result in results) { Console.WriteLine(result.Name); }
(Lewis Drug Store) Locanda Vini E Olii 101 Restaurant And Bar 44 Sw Ristorante & Bar 900 Park A Voce ...
スキップ
クエリ結果を返す前に指定した数のドキュメントをスキップするには、IFindFluent
インターフェースが提供する Skip()
メソッドを使用します。 Find()
メソッドを呼び出した後、Skip()
メソッドを連鎖させて操作の動作を変更します。
次の例では、 cuisine
フィールドの値が"Italian"
であるすべてのドキュメントを返し、最初の10
ドキュメントをスキップします。
var filter = Builders<Restaurant>.Filter.Eq("cuisine", "Italian"); var results = collection.Find(filter).Skip(10).ToList(); foreach (var result in results) { Console.WriteLine(result.Name); }
Trattoria Alba Da Umberto Restaurant La Strada Restaurant Pasta Lovers Trattoria Nanni Restaurant Villa Mosconi Restaurant Villa Berulia Marco Polo Ristorante Cafe Luna Baraonda
制限、ソート、スキップの組み合わせ
Limit()
、Sort()
、Skip()
メソッドを単一の Find()
メソッド呼び出しに連鎖させることができます。これにより、 読み取り操作から返されるソートされたドキュメントの最大数を設定でき、返される前に指定された数のドキュメントをスキップできます。
次の例では、cuisine
の値が "Italian"
である 5
ドキュメントが返されます。結果は name
フィールド値の昇順でソートされ、最初の 10
ドキュメントはスキップされます。
var filter = Builders<Restaurant>.Filter.Eq("cuisine", "Italian"); var sort = Builders<Restaurant>.Sort.Ascending("name"); var results = collection.Find(filter).Limit(10).Sort(sort).Skip(10).ToList(); foreach (var result in results) { Console.WriteLine(result.Name); }
Acqua Acqua Restaurant Acqua Santa Acquista Trattoria Acquolina Catering Adriatic Restaurant Pizzeria Bar Adrienne'S Pizza Bar Ai Fiori Aita Restaurant Al Di La
注意
これらのメソッドを呼び出す順序によって、返されるドキュメントは変更されません。 .NET/ C#ドライバーは、ソート操作を最初に実行し、次にスキップ操作を実行し、次に 制限操作を実行するように呼び出しの順序を自動的に並べ替えます。
詳細情報
ドキュメント取得の詳細については、 データ取得ガイドを 参照してください。
クエリの指定の詳細については、「 クエリの指定」ガイドを参照してください。
API ドキュメント
このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。