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

返すフィールドを指定する

項目一覧

  • Overview
  • サンプル データ
  • プロジェクションのタイプ
  • 含めるフィールドの指定
  • _idフィールドを除外する
  • 除外するフィールドの指定
  • 詳細情報
  • API ドキュメント

このガイドでは、プロジェクションを使用して、読み取り操作から返されるフィールドを指定する方法を学習できます。 プロジェクションは、MongoDB がクエリから返すフィールドを指定するドキュメントです。

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

プロジェクションを使用して、返されるドキュメントに含めるフィールドを指定したり、除外するフィールドを指定したりできます。

プロジェクションに含める特定のフィールドを指定すると、他のすべてのフィールドは暗黙的に除外されます(デフォルトで含まれる_idフィールドを除く)。 _idフィールドを除外しない限り、1 つのプロジェクションに包含ステートメントと除外ステートメントを組み合わせることはできません。

返されたドキュメントから_idフィールドを削除するには、明示的に除外する必要があります。

結果に含めるフィールドを指定するには、Project() メソッドと Find() メソッドをチェーンします。 Project() メソッドを呼び出すときは、プロジェクション定義をパラメーターとして渡す必要があります。 Builders<T>.Projection.Include() メソッドを使用し、 をパラメーターとして含めるフィールド名を渡すことで、プロジェクション定義を構築できます。このメソッドは、プロジェクションに複数のフィールドを含めるために連鎖させることができます。

次の例では、Find() メソッドを使用して、nameフィールドの値が "Emerald Pub" であるすべてのレストランを検索します。次に、コードは Project() メソッドを呼び出して、name フィールドと cuisine フィールドを結果に含めるように検索操作に指示します。

var filter = Builders<BsonDocument>.Filter.Eq("name", "Emerald Pub");
var projection = Builders<BsonDocument>.Projection
.Include("name")
.Include("cuisine");
var results = collection.Find(filter).Project(projection).ToList();
foreach (var result in results)
{
Console.WriteLine(result.ToJson());
}
{ "_id" : ObjectId("..."), "cuisine" : "American", "name" : "Emerald Pub" }
{ "_id" : ObjectId("..."), "cuisine" : "American", "name" : "Emerald Pub" }

含めるフィールドを指定する場合は、返されるドキュメントから_idフィールドを除外することもできます。

次の例では、前の例と同じクエリを実行しますが、プロジェクションから_idフィールドを除外しています。

var filter = Builders<BsonDocument>.Filter.Eq("name", "Emerald Pub");
var projection = Builders<BsonDocument>.Projection
.Include("name")
.Include("cuisine")
.Exclude("_id");
var results = collection.Find(filter).Project(projection).ToList();
foreach (var result in results)
{
Console.WriteLine(result.ToJson());
}
{ "cuisine" : "American", "name" : "Emerald Pub" }
{ "cuisine" : "American", "name" : "Emerald Pub" }

結果から除外するフィールドを指定するには、Project() メソッドと Find() メソッドをチェーンします。プロジェクション内のフィールドを除外するには、Builders<T>.Projection.Exclude() メソッドを使用し、除外するフィールド名をパラメーターとして渡します。このメソッドを連鎖させることで、プロジェクションの複数のフィールドを除外できます。

次の例では、Find() メソッドを使用して、nameフィールドの値が "Emerald Pub" であるすべてのレストランを検索します。次に、プロジェクションを使用して、返されるドキュメントから cuisineフィールドを除外します。

var filter = Builders<BsonDocument>.Filter.Eq("name", "Emerald Pub");
var projection = Builders<BsonDocument>.Projection
.Exclude("cuisine");
var results = collection.Find(filter).Project(projection).ToList();
foreach (var result in results)
{
Console.WriteLine(result.ToJson());
}
{ "_id" : ObjectId("..."), "address" : { "building" : "308", "coord" : [-74.008493599999994, 40.725807199999998], "street" : "Spring Street", "zipcode" : "10013" }, "borough" : "Manhattan", "grades" : [{ "date" : ISODate("2014-02-24T00:00:00Z"), "grade" : "A", "score" : 5 }, { "date" : ISODate("2013-08-26T00:00:00Z"), "grade" : "A", "score" : 13 }, { "date" : ISODate("2013-03-04T00:00:00Z"), "grade" : "A", "score" : 12 }, { "date" : ISODate("2012-06-25T00:00:00Z"), "grade" : "A", "score" : 10 }, { "date" : ISODate("2011-12-23T00:00:00Z"), "grade" : "A", "score" : 10 }, { "date" : ISODate("2011-07-26T00:00:00Z"), "grade" : "C", "score" : 32 }], "name" : "Emerald Pub", "restaurant_id" : "40367329" }
{ "_id" : ObjectId("..."), "address" : { "building" : "18301", "coord" : [-73.791184999999999, 40.740119999999997], "street" : "Horace Harding Expressway", "zipcode" : "11365" }, "borough" : "Queens", "grades" : [{ "date" : ISODate("2014-05-07T00:00:00Z"), "grade" : "A", "score" : 12 }, { "date" : ISODate("2013-04-30T00:00:00Z"), "grade" : "A", "score" : 9 }, { "date" : ISODate("2012-03-01T00:00:00Z"), "grade" : "A", "score" : 13 }], "name" : "Emerald Pub", "restaurant_id" : "40668598" }

プロジェクションの詳細については、MongoDB Server マニュアルの「プロジェクト フィールド 」ガイドを参照してください。

このガイドで説明した関数や型の詳細については、次のAPIドキュメントを参照してください。

戻る

Retrieve Data