Menu Docs
Página inicial do Docs
/ / /
Scala
/

Filtros

Nesta página

  • Comparação
  • Exemplos
  • Lógica
  • Exemplos
  • arrays
  • Exemplos
  • Elementos
  • Exemplos
  • Avaliação
  • Exemplos
  • Bitwise
  • Exemplos
  • Geoespacial
  • Exemplos

A classeFiltros fornece métodos de fábrica estáticos para os operadores de query do MongoDB . Cada método retorna uma instância do Bson tipo, que, por sua vez, pode ser passada para qualquer método que espera um filtro de query.

Você pode importar os métodos da classe Filters estaticamente, como mostrado no seguinte código:

import org.mongodb.scala.model.Filters._

Os exemplos deste guia pressupõem essa importação estática.

Os métodos dos operadores de comparação incluem o seguinte:

  • eq: Corresponde a valores que são iguais a um valor especificado. Com nome alternativo para equal , eq é uma palavra reservada.

  • gt: corresponde a valores que são maiores que um valor especificado.

  • gte: Corresponde a valores que são maiores ou iguais a um valor especificado.

  • lt: Corresponde a valores que são menores do que um valor especificado.

  • lte: Corresponde a valores menores ou iguais a um valor especificado.

  • ne: Corresponde a todos os valores que não são iguais a um valor especificado. Com nome alternativo para notEqual , neq é uma palavra reservada.

  • in: Corresponde a qualquer um dos valores especificados em uma array.

  • nin: não corresponde a nenhum dos valores especificados em uma array.

  • empty: corresponde a todos os documentos.

O exemplo seguinte cria um filtro que seleciona todos os documentos onde o valor do campo qty é 20:

`eq`("qty", 20)
equal("qty", 20)

O exemplo a seguir cria um filtro que seleciona todos os documentos onde o valor do campo qty é 5 ou 15:

in("qty", 5, 15)

O exemplo a seguir cria um filtro que seleciona todos os documentos porque o filtro está vazio:

empty()

Os métodos dos operadores lógicos incluem o seguinte:

  • and: une filtros com um AND lógico e seleciona todos os documentos que correspondem às condições de ambos os filtros.

  • or: une filtros com um OR lógico e seleciona todos os documentos que correspondem às condições de qualquer filtro.

  • not: inverte o efeito de uma expressão de query e seleciona documentos que não correspondem ao filtro.

  • nor: une filtros com um NOR lógico e seleciona todos os documentos que não correspondem a ambos os filtros.

O exemplo a seguir cria um filtro que seleciona todos os documentos onde o valor do campo qty é maior que 20 e o valor do campo user é "jdoe":

and(gt("qty", 20), equal("user", "jdoe"))

O método and() gera um operador $and somente se necessário, pois a linguagem de query adiciona implicitamente todos os elementos em um filtro. O exemplo anterior é renderizado como o seguinte:

{
"qty" : { "$gt" : 20 },
"user" : "jdoe"
}

O exemplo a seguir cria um filtro que seleciona todos os documentos onde o valor do campo price é igual a 0.99 ou 1.99 e o valor do campo sale é true ou o valor do campo qty é menor que 20:

and(or(equal("price", 0.99), equal("price", 1.99)
or(equal("sale", true), lt("qty", 20)))

Esta query não pode ser construída utilizando uma operação $and implícita, pois utiliza o operador $or mais de uma vez. Esta query renderiza para o seguinte:

{
"$and" :
[
{ "$or" : [ { "price" : 0.99 }, { "price" : 1.99 } ] },
{ "$or" : [ { "sale" : true }, { "qty" : { "$lt" : 20 } } ] }
]
}

Os métodos dos operadores de array incluem o seguinte:

  • all: Corresponde a arrays que contêm todos os elementos especificados na query.

  • elemMatch: seleciona documentos se um elemento no campo array corresponder a todas as condições $elemMatch especificadas.

  • size: seleciona documentos se o campo de array tiver um tamanho especificado.

O exemplo a seguir seleciona documentos com um array tags contendo "ssl" e "security":

all("tags", "ssl", "security")

Os métodos dos operadores de elementos incluem o seguinte:

  • exists: seleciona documentos que tenham o campo especificado.

  • type: seleciona documentos se um campo for do tipo especificado. Com nome alternativo para bsonType , type é uma palavra reservada.

O exemplo a seguir seleciona documentos que contêm um campo qty e o valor desse campo não é igual a 5 ou 15:

and(exists("qty"), nin("qty", 5, 15))

Os métodos do operador de avaliação incluem o seguinte:

  • mod: executa uma operação de módulo no valor de um campo e seleciona documentos com um resultado especificado.

  • regex: Seleciona documentos onde os valores correspondem a uma expressão regular especificada .

  • text: seleciona documentos que correspondem a uma expressão de pesquisa de texto completo.

  • where: Corresponde a documentos que satisfazem uma expressão JavaScript .

O exemplo seguinte pressupõe uma coleção que tenha um índice de texto no campo abstract. Seleciona documentos que têm um campo abstract contendo o termo "coffee":

text("coffee")

Os índices de texto permitem pesquisas com distinção entre maiúsculas e minúsculas. O exemplo a seguir seleciona documentos que têm um campo abstract contendo o termo exato "coffee":

text("coffee", TextSearchOptions().caseSensitive(true))

Índices de texto permitem pesquisas sensíveis a diacríticos. O exemplo a seguir seleciona documentos que têm um campo abstract contendo o termo exato "café":

text("café", TextSearchOptions().diacriticSensitive(true))

Os métodos do operador bitwise incluem o seguinte:

  • bitsAllSet: seleciona documentos onde todos os bits especificados de um campo são definidos.

  • bitsAllClear: seleciona documentos onde todos os bits especificados de um campo estão limpos.

  • bitsAnySet: seleciona documentos onde pelo menos um dos bits especificados de um campo está definido.

  • bitsAnyClear: seleciona documentos onde pelo menos um dos bits especificados de um campo está limpo.

O exemplo seleciona documentos que têm um campo bitField com bits definidos nas posições do bitmask correspondente 50 (00110010):

bitsAllSet("bitField", 50)

Os métodos do operador geoespacial incluem o seguinte:

  • geoWithin: seleciona todos os documentos que contêm um campo cujo valor é uma geometria GeoJSON que se enquadra dentro de uma geometria GeoJSON delimitadora.

  • geoWithinBox: seleciona todos os documentos que contêm um campo com dados de coordenadas de grade que existem inteiramente dentro da caixa especificada.

  • geoWithinPolygon: seleciona todos os documentos que contêm um campo com dados de coordenadas de grade que existem inteiramente dentro do polígono especificado.

  • geoWithinCenter: seleciona todos os documentos que contêm um campo com dados de coordenadas de grade que existem inteiramente dentro do círculo especificado.

  • geoWithinCenterSphere: Seleciona geometrias contendo um campo com dados geoespaciais (GeoJSON ou legacy coordinate pairs) que existem inteiramente dentro do círculo especificado, utilizando geometria esférica.

  • geoIntersects: seleciona geometrias que interseccionam com uma geometria GeoJSON . O índice 2dsphere suporta $geoIntersects.

  • near: Retorna objetos geoespaciais próximos a um ponto. Requer um índice geoespacial. Os índices 2dsphere e 2d suportam $near.

  • nearSphere: retorna objetos geoespaciais próximos a um ponto em uma esfera. Requer um índice geoespacial. Os índices 2dsphere e 2d suportam $nearSphere.

Para facilitar a construção de filtros baseados em GeoJSON , o driver também inclui uma hierarquia de classe GeoJSON completa:

  • Point: Representação de um GeoJSON Point

  • MultiPoint: Representação de um GeoJSON MultiPoint

  • LineString: Representação de um GeoJSON LineString

  • MultiLineString: Representação de um GeoJSON MultiLineString

  • Polygon: Representação de um GeoJSON Polygon

  • MultiPolygon: Representação de um GeoJSON MultiPolygon

  • GeometryCollection: Representação de um GeoJSON GeometryCollection

O exemplo a seguir cria um filtro que seleciona todos os documentos onde o campo geo contém um objeto GeoJSON Geometry que se enquadra no polígono fornecido:

val polygon: Polygon = Polygon(Seq(Position(0, 0), Position(4, 0),
Position(4, 4), Position(0, 4),
Position(0, 0)))
geoWithin("geo", polygon)

O exemplo a seguir cria um filtro que seleciona todos os documentos em que o campo geo contém um objeto GeoJSON Geometry que cruza o Point fornecido:

geoIntersects("geo", Point(Position(4, 0)))

Voltar

Construtores