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

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

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

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

このコレクション内のドキュメントは、次の Kotlin データ クラスによってモデル化されます。

data class Restaurant( @BsonId val id: ObjectId? = null, val name: String, val borough: String, val cuisine: String)

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

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

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

結果に含めるフィールドを指定するには、次の構文を使用します。

val projection = Projection.fields( Projections.include(<fieldName1>, <fieldName2>, ...))

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

val projection = Projections.fields( Projections.include( Restaurant::name.name, Restaurant::cuisine.name, Restaurant::borough.name )) val results = collection .find(eq(Restaurant::name.name, "Emerald Pub")) .projection(projection) results.forEach { result -> println(result)}

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

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

val projection = Projections.fields( Projections.excludeId(), Projections.include( Restaurant::name.name, Restaurant::cuisine.name, Restaurant::borough.name )) val results = collection .find(eq(Restaurant::name.name, "Emerald Pub")) .projection(projection) results.forEach { result -> println(result)}

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

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