投影 类为MongoDB投影操作符提供静态工厂方法。每个方法都返回一个 Bson 类型的实例,而该实例又可以传递给任何需要投影的方法。
您可以静态导入Projections类的方法,如以下代码所示:
import org.mongodb.scala.model.Projections._ 
本指南中的示例假定此静态导入。
包含
默认情况下,每个文档的所有字段都包含在结果中。 要指定包含一个或多个字段(即隐式排除_id之外的所有其他字段),请使用include()方法。
以下示例包括quantity字段和隐式的_id字段:
include("quantity") 
以下示例包括quantity和totalAmount字段,以及隐式的_id字段:
include("quantity", "totalAmount") 
Exclusion
要指定排除一个或多个字段(即隐式包括所有其他字段),请使用exclude()方法。
以下示例排除了 quantity(温度)字段:
排除("quantity")
以下示例排除了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
要投影数组的切片,请使用slice()方法之一。
以下示例投影tags数组的前7个元素:
slice("tags", 7) 
以下示例跳过tags数组的前2元素并投影下一个5 :
slice("tags", 2, 5) 
文本分数
要指定$text查询的分数投影,请使用metaTextScore()方法指定投影字段的名称。
以下示例将文本得分投影为 score 字段的值:
metaTextScore("score") 
合并投影
要组合多个投影,请使用 fields 方法。
以下示例包括 quantity 和 totalAmount 字段,不包括 _id 字段:
fields(include("quantity", "totalAmount"), excludeId())