文档菜单
文档首页
/ / /
Scala
/

投影

本页内容

  • 包含
  • 排除
  • 排除_id字段
  • 使用指定过滤器匹配数组元素
  • 使用隐式过滤器匹配数组元素
  • 切片
  • 文本分数
  • 组合投影

Projections类提供了MongoDB投影操作符的静态工厂方法。每个方法都返回一个Bson类型的实例,该实例可以传递给任何期望投影的方法。

您可以将Projections类的静态方法导入,如下面的代码所示

import org.mongodb.scala.model.Projections._

本指南中的示例假设此静态导入。

默认情况下,每个文档的所有字段都包含在结果中。要指定包含一个或多个字段,隐式排除除_id之外的所有其他字段,请使用include()方法。

以下示例包含quantity字段,以及隐式包含的_id字段

include("quantity")

以下示例包含quantitytotalAmount字段,以及隐式包含的_id字段

include("quantity", "totalAmount")

要指定排除一个或多个字段,隐式包含所有其他字段,请使用exclude()方法。

以下示例排除了 数量 字段

exclude("数量")

以下示例排除了 数量总计金额 字段

exclude("quantity", "totalAmount")

要指定排除 _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")

要组合多个投影,请使用字段方法。

以下示例包括quantitytotalAmount字段,并排除了_id字段

fields(include("quantity", "totalAmount"), excludeId())

返回

过滤器