投影
投影 类为 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())