The Projections class provides static factory methods for the MongoDB projection operators. Each method returns an instance of the Bson
type, which can in turn be passed to any method that expects a projection.
Você pode importar os métodos da classe Projections
estaticamente, como mostrado no seguinte código:
import org.mongodb.scala.model.Projections._
Os exemplos deste guia pressupõem essa importação estática.
Inclusão
Por padrão, todos os campos de cada documento são incluídos nos resultados. Para especificar a inclusão de um ou mais campos, que exclui implicitamente todos os outros campos exceto _id
, utilize o método include()
.
O exemplo seguinte inclui o campo quantity
e, implicitamente, o campo _id
:
include("quantity")
O exemplo seguinte inclui os totalAmount
e, quantity
, o _id
:
include("quantity", "totalAmount")
Exclusion
Para especificar a exclusão de um ou mais campos, que inclui implicitamente todos os outros campos, utilize o método exclude()
.
O exemplo seguinte exclui o campo quantity
:
exclude("quantidade")
O exemplo seguinte exclui os campos quantity
e totalAmount
:
exclude("quantity", "totalAmount")
Exclusão do campo _id
Para especificar a exclusão do campo _id
, use o método excludeId()
:
excludeId()
Isso equivale ao seguinte código:
exclude("_id")
Correspondência de elementos da matriz com um filtro especificado
Para especificar uma projeção que inclua somente o primeiro elemento de uma array que corresponda a um filtro de query fornecido, use o método elemMatch()
que usa um nome de campo e um filtro.
O exemplo seguinte projeta o primeiro elemento do campo de array orders
, onde o campo quantity
é maior que 3
:
elemMatch("orders", Filters.gt("quantity", 3))
Correspondência de elementos de array com um filtro implícito
Para especificar uma projeção que inclua somente o primeiro elemento de uma array que corresponda ao filtro fornecido como parte da query, use o método elemMatch()
que usa apenas um nome de campo.
O exemplo a seguir projeta o primeiro elemento da array orders
que corresponde ao filtro de query:
elemMatch("orders")
Corte
Para projetar uma fatia de uma array, use um dos métodos slice()
.
O exemplo seguinte projeta os primeiros elementos 7
da array tags
:
slice("tags", 7)
O exemplo a seguir pula os primeiros 2
elementos da tags
array e projeta o próximo 5
:
slice("tags", 2, 5)
Pontuação de texto
Para especificar uma projeção da pontuação de uma query do $text
, utilize o método metaTextScore()
para especificar o nome do campo projetado.
O exemplo seguinte projeta a pontuação de texto como o valor do campo score
:
metaTextScore("score")
Combinando projeções
Para combinar múltiplas projeções, use o método de campos.
O exemplo seguinte inclui os campos quantity
e totalAmount
e exclui o campo _id
:
fields(include("quantity", "totalAmount"), excludeId())