Docs Menu
Docs Home
/ / /
C#/.NET
/ / /

返すドキュメントを指定する

項目一覧

  • Overview
  • サンプル データ
  • Limit
  • Sort
  • スキップ
  • 制限、ソート、スキップの組み合わせ
  • 詳細情報
  • API ドキュメント

このガイドでは、次のメソッドを Find() メソッドに連結して、読み取り操作から返されるドキュメントを指定する方法を学習できます。

  • limit() : クエリから返されるドキュメントの最大数を指定します

  • Sort() : 返されるドキュメントのソート順序を指定します

  • skip() : クエリ結果を返す前にスキップするドキュメントの数を指定します

このガイドの例では、 Atlas サンプル データセットsample_restaurantsデータベースのrestaurantsコレクションを使用します。 MongoDB Atlas クラスターを無料で作成して、サンプル データセットをロードする方法については、 「 Atlas を使い始める 」ガイドを参照してください。

このページの例では、コレクション内のドキュメントのモデルとして次の Restaurantクラスを使用します。

[BsonIgnoreExtraElements]
public class Restaurant {
public ObjectId Id { get; set; }
[BsonElement("name")]
public string Name { get; set; }
[BsonElement("cuisine")]
public string Cuisine { get; set; }
}

読み取り操作から返されるドキュメントの最大数を指定するには、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 つのドキュメントが返されます。 次のセクションでは、指定された順序でドキュメントを返す方法について説明します。

指定した順序でドキュメントを返すには、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 ドキュメントを参照してください。

戻る

データの変更を監視