プロジェクション
プロジェクション クラスは、 MongoDB プロジェクション演算子 の静的ファクトリー メソッドを提供します。各メソッドは Bson
型のインスタンスを返します。これは、プロジェクションを必要とする任意のメソッドに渡すことができます。
次のコードに示すように、 Projections
クラスのメソッドを静的にインポートできます。
import org.mongodb.scala.model.Projections._
このガイドの例では、この静的インポートを前提としています。
包含
デフォルトでは、各ドキュメントのすべてのフィールドが結果に含まれます。 1 つ以上のフィールドを含めるフィールドを指定し、 _id
以外のすべてのフィールドを暗黙的に除外するには、 include()
メソッドを使用します。
次の例には、 quantity
フィールドと暗黙的に_id
フィールドが含まれています。
include("quantity")
次の例には、 quantity
フィールドとtotalAmount
フィールドと、暗黙的に_id
フィールドが含まれています。
include("quantity", "totalAmount")
Exclusion
他のすべてのフィールドが暗黙的に含まれる 1 つ以上のフィールドの除外を指定するには、 exclude()
メソッドを使用します。
次の例では、 quantity
フィールドが除外されています。
include("q")
次の例では、quantity
フィールドとtotalAmount
フィールドが除外されています。
exclude("quantity", "totalAmount")
_id フィールドの除外
_id
フィールドの除外を指定するには、 excludeId()
メソッドを使用します。
excludeId()
これは、次のコードと同等です。
exclude("_id")
指定フィルターによる配列要素の一致
指定されたクエリフィルターに一致する配列の最初の要素のみを含むプロジェクションを指定するには、フィールド名とフィルターをelemMatch()
メソッドを使用します。
次の例では、 orders
配列フィールドの最初の要素を投影します。ここでは、 quantity
フィールドは3
より大きいです。
elemMatch("orders", Filters.gt("quantity", 3))
暗黙的なフィルターによる配列要素一致
クエリの一部として指定されたフィルターに一致する、配列の最初の要素のみを含むプロジェクションを指定するには、フィールド名のみをelemMatch()
メソッドを使用します。
次の例では、クエリフィルターに一致するorders
配列の最初の要素をプロジェクションします。
elemMatch("orders")
スライス
配列のスライスをプロジェクションするには、 slice()
メソッドのいずれかを使用します。
次の例では、 tags
配列の最初の7
要素をプロジェクションします。
slice("tags", 7)
次の例では、 tags
配列の最初の2
要素をスキップし、次の5
をプロジェクションします。
slice("tags", 2, 5)
テキストスコア
$text
クエリのスコアのプロジェクションを指定するには、 metaTextScore()
メソッドを使用してプロジェクションされるフィールドの名前を指定します。
次の例では、テキスト スコアをscore
フィールドの値としてプロジェクションします。
metaTextScore("score")
プロジェクションの組み合わせ
複数のプロジェクションを結合するには、 フィールド メソッドを使用します。
次の例には、 quantity
フィールドとtotalAmount
フィールドが含まれ、 _id
フィールドは除外されています。
fields(include("quantity", "totalAmount"), excludeId())