投影
的Projections类提供了MongoDB投影操作符的静态工厂方法。每个方法都返回一个Bson
类型的实例,该实例可以传递给任何期望投影的方法。
您可以将Projections
类的静态方法导入,如下面的代码所示
import org.mongodb.scala.model.Projections._
本指南中的示例假设此静态导入。
包含
默认情况下,每个文档的所有字段都包含在结果中。要指定包含一个或多个字段,隐式排除除_id
之外的所有其他字段,请使用include()
方法。
以下示例包含quantity
字段,以及隐式包含的_id
字段
include("quantity")
以下示例包含quantity
和totalAmount
字段,以及隐式包含的_id
字段
include("quantity", "totalAmount")
排除
要指定排除一个或多个字段,隐式包含所有其他字段,请使用exclude()
方法。
以下示例排除了 数量
字段
exclude("数量")
以下示例排除了 数量
和 总计金额
字段
exclude("quantity", "totalAmount")
排除 _id 字段
要指定排除 _id
字段,请使用 excludeId()
方法
excludeId()
这相当于以下代码
exclude("_id")
数组元素匹配指定过滤器
要指定一个仅包含与提供的查询过滤器匹配的数组的第一个元素的投影,请使用 elemMatch()
方法,该方法接受字段名称和过滤器。
以下示例将 orders
数组字段的第一个元素进行投影,其中 数量
字段大于 3
elemMatch("orders", Filters.gt("quantity", 3))
数组元素匹配隐式过滤器
要指定一个只包含与查询中提供的过滤器匹配的数组第一个元素的投影,请使用只接受字段名称的elemMatch()
方法。
以下示例投影了与查询过滤器匹配的orders
数组的第一个元素
elemMatch("orders")
切片
要投影数组的切片,请使用任一slice()
方法。
以下示例投影了tags
数组的第一个7
个元素
slice("tags", 7)
以下示例跳过了tags
数组的第一个2
个元素,并投影了接下来的5
个元素
slice("tags", 2, 5)
文本分数
要指定文本查询分数的投影,请使用metaTextScore()
方法指定投影字段的名称。
以下示例将文本分数投影为score
字段的值
metaTextScore("score")
组合投影
要组合多个投影,请使用字段方法。
以下示例包括quantity
和totalAmount
字段,并排除了_id
字段
fields(include("quantity", "totalAmount"), excludeId())