Projectionsクラスは、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())