AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

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

このガイドでは、プロジェクションを使用して、読み取り操作から返されるフィールドを指定する方法を学習できます。 プロジェクションは、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フィールドを除外することもできます。

次の例では、前の例と同じクエリを実行しますが、プロジェクションから_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());
}

結果から除外するフィールドを指定するには、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());
}

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

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