返すフィールドを指定する
Overview
このガイドでは、プロジェクションを使用して、読み取り操作から返されるフィールドを指定する方法を学習できます。 プロジェクションは、MongoDB がクエリから返すフィールドを指定するドキュメントです。
サンプル データ
このガイドの例では、 Atlas サンプル データセットのsample_restaurants
データベース内の restaurants
コレクションを使用します。 MongoDB Atlas クラスターを無料で作成して、サンプル データセットをロードする方法については、 「 Atlas を使い始める 」ガイドを参照してください。
このコレクション内のドキュメントは、次の Kotlin データ クラスによってモデル化されます。
data class Restaurant( 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) }
Restaurant(id=5eb3d668b31de5d588f429e2, name=Emerald Pub, borough=Manhattan, cuisine=American) Restaurant(id=5eb3d668b31de5d588f432dd, name=Emerald Pub, borough=Queens, cuisine=American)
フィールドを除外する_id
含めるフィールドを指定する場合は、返されるドキュメントから_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) }
Restaurant(id=null, name=Emerald Pub, borough=Manhattan, cuisine=American) Restaurant(id=null, name=Emerald Pub, borough=Queens, cuisine=American)
詳細情報
プロジェクションの詳細については、MongoDB Server マニュアルのプロジェクト フィールド ガイドを参照してください。
API ドキュメント
このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。