Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
FS コア プロバイダー
/

クエリ データ

Entity Framework コアを使用すると、データベースコマンドを明示的に実行せずにアプリケーション内のデータを操作できます。 データをクエリするには、 LINQ(言語統合クエリ) 構文を使用します。 LINQ では、C# 固有のキーワードと演算子を使用して、厳密に型指定されたクエリを作成できます。 アプリケーションを実行すると、F Core プロバイダーは LINQ クエリを自動的に変換し、MongoDB Query API を使用してデータベース上で実行します。

このガイドでは、FS コア プロバイダーを使用するように構成されたアプリケーションにおける一般的なクエリ操作の例を確認できます。

Tip

FS コア プロバイダーを使用するようにアプリケーションを構成する方法については、「 FS コアの構成 」を参照してください。

FirstOrDefault()メソッドを使用して 1 つのエンティティを検索するか、 Where()メソッドを使用して複数のエンティティを検索します。

FirstOrDefault()メソッドは、コレクション内で検索条件に一致する最初に見つけたエンティティを返し、一致するエンティティが見つからない場合はnullを返します。

次のコードでは、 Planets FirstOrDefault() nameを使用して、 DBSet

var planet = db.Planets.FirstOrDefault(p => p.name == "Mercury");
Console.WriteLine(planet.name);

Where()メソッドを使用して、コレクションから複数のエンティティを取得できます。 Where()は、検索条件に一致するすべてのエンティティを返します。

次のコードでは、 Where()メソッドを使用して、 hasRingsフィールドがtrueに設定されているすべての惑星を検索し、惑星名をコンソールに出力します。

var planets = db.Planets.Where(p => p.hasRings);
foreach (var p in planets)
{
Console.WriteLine(p.name);
}

クエリからエンティティを返す順序を指定するには、 OrderBy()メソッドを使用します。 OrderBy()は、指定された並べ替え条件に基づいて要素を昇順で並べ替えます。

次のコードでは、 OrderBy()メソッドを使用してすべての惑星を検索し、 orderFromSunフィールドの値で昇順に並べ替えます。 次に、結果をコンソールに出力します。

var planetList = db.Planets.OrderBy(p => p.orderFromSun);
foreach (var p in planetList)
{
Console.WriteLine(p.name);
}
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune

Tip

降順でソート

OrderByDescending()メソッドを使用して、クエリの結果を降順で並べ替えることができます。

ThenBy()メソッドを使用して、クエリで 2 次並べ替えを実行できます。 ThenBy()メソッドは、指定された並べ替え条件に基づいて、 OrderBy()メソッドの結果を昇順で並べ替えます。 ThenBy()メソッドはOrderBy()メソッドに連結する必要があります。

Tip

降順での二次ソート

ThenByDescending()メソッドを使用して、降順で二次並べ替えを実行できます。

次のコードでは、 OrderBy()メソッドとThenBy()メソッドを使用してすべての惑星を検索し、 hasRings()フィールドで並べ替え、 nameフィールドで 2 次並べ替えます。

var planetList = db.Planets.OrderBy(o => o.hasRings).ThenBy(o => o.name);
foreach (var p in planetList)
{
Console.WriteLine("Has rings: " + p.hasRings + ", Name: " + p.name);
}
Has rings: False, Name: Earth
Has rings: False, Name: Mars
Has rings: False, Name: Mercury
Has rings: False, Name: Venus
Has rings: True, Name: Jupiter
Has rings: True, Name: Neptune
Has rings: True, Name: Saturn
Has rings: True, Name: Uranus

Tip

ブール値を持つフィールドでソートすると、フィールド値がfalse のエンティティがtrue のフィールド値より前に表示されます。

FS コア プロバイダーは、次のスカラー集計メソッドをサポートしています。

  • Count():コレクション内の要素の数または述語に一致するドキュメントの数を返します

  • LongCount():コレクション内の要素の数を long として返すか、述語に一致するドキュメントの数を返します

  • Any():コレクション内のいずれかの要素が述語に一致する場合は true を返します

  • Max():コレクション内の指定されたフィールドの最大値を返します

  • Min():コレクション内の指定されたフィールドの最小値を返します

  • Sum():コレクション内の指定されたフィールドの値の合計を返します

  • Average():コレクション内の指定されたフィールドの値の平均を返します

次のセクションでは、前述の各方法の例を示します。

次の例では、Count() メソッドを使用して、Planetsコレクション内の要素の数をカウントします。

var planetCount = db.Planets.Count();
Console.WriteLine("Planet Count: " + planetCount);

次の例では、Count() メソッドを使用して、hasRingsフィールドが true に設定されている Planetsコレクション内の要素の数をカウントします。

var planetCountWithRings = db.Planets.Count(p => p.hasRings);
Console.WriteLine("Planet Count with Rings: " + planetCountWithRings);

次の例では、LongCount() メソッドを使用して Planetsコレクション内の要素の数をカウントし、その結果を long として返します。

var planetCountLong = db.Planets.LongCount();
Console.WriteLine("Long Planet Count: " + longCount);

次の例では、LongCount() メソッドを使用して、hasRingsフィールドが true に設定されている Planetsコレクション内の要素の数をカウントし、その結果を long として返します。

var planetCountLongWithRings = db.Planets.LongCount(p => p.hasRings);
Console.WriteLine("Long Planet Count with Rings: " + planetCountLongWithRings);

次の例では、Any() メソッドを使用して、Planetsコレクション内のいずれかの要素で hasRingsフィールドが true に設定されているかどうかを確認します。

var results = db.Planets.Any(p => p.hasRings);
foreach (var p in results)
{
Console.WriteLine("Planet with Rings: " + p.name);
}

次の例では、Max() メソッドを使用して、Planetsコレクション内の orderFromSunフィールドの最大値を検索します。

var furthestPlanet = db.Planets.Max(p => p.orderFromSun);
Console.WriteLine("Furthest Planet: " + furthestPlanet.name);

次の例では、Min() メソッドを使用して、Planetsコレクション内の orderFromSunフィールドの最小値を検索します。

var closestPlanet = db.Planets.Min(p => p.OrderFromSun);
Console.WriteLine("Closest Planet: " + closestPlanet.Name);

次の例では、Sum() メソッドを使用して、Planetsコレクション内の massフィールドの合計を求めます。

var totalMass = db.Planets.Sum(p => p.mass);
Console.WriteLine("Total Mass of Planets: " + totalMass);

次の例では、Average() メソッドを使用して、Planetsコレクション内の massフィールドの平均値を検索します。

var averageMass = db.Planets.Average(p => p.mass);
Console.WriteLine("Average Mass of Planets: " + averageMass);

MongoDBの集計の詳細については、 MongoDB Serverマニュアルの 集計操作ガイドを参照してください。

このガイドで説明するメソッドの詳細については、次の .NET API ドキュメントへのリンクを参照してください。

戻る

構成

項目一覧