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

Os filtros fornece métodos de fábrica estáticos para os operadores de query do MongoDB . Cada método retorna uma instância do tipo Bson , 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