Menu Docs
Página inicial do Docs
/ / /
Kotlin Coroutine
/ /

Especificar uma query

Nesta página

  • Visão geral
  • Operadores de comparação
  • Operadores lógicos
  • Operadores de array
  • Operadores de elementos
  • Operadores de avaliação

Neste guia, você pode aprender como especificar uma query no driver MongoDB Kotlin.

A maioria das operações CRUD permite que você restrinja o definir de documentos correspondentes especificando critérios correspondentes em um filtro de query. Os filtros de query contêm um ou mais operadores de query que se aplicam a campos específicos que determinam quais documentos incluir no conjunto de resultados.

Nesta página, abordamos os seguintes operadores de query com exemplos sobre como usá-los:

  • Operadores de comparação

  • Operadores lógicos

  • Operadores de array

  • Operadores de elementos

  • Operadores de avaliação

Os exemplos deste guia utilizam os seguintes documento na collection paint_purchases :

{ "_id": 1, "color": "red", "qty": 9, "vendor": ["A", "E"] }
{ "_id": 2, "color": "purple", "qty": 8, "vendor": ["B", "D", "F"], "rating": 5 }
{ "_id": 3, "color": "blue", "qty": 5, "vendor": ["A", "E"] }
{ "_id": 4, "color": "white", "qty": 6, "vendor": ["D"], "rating": 9 }
{ "_id": 5, "color": "yellow", "qty": 4, "vendor": ["A", "B"] }
{ "_id": 6, "color": "pink", "qty": 3, "vendor": ["C"] }
{ "_id": 7, "color": "green", "qty": 8, "vendor": ["C", "E"], "rating": 7 }
{ "_id": 8, "color": "black", "qty": 7, "vendor": ["A", "C", "D"] }

Esses dados são modelados com a seguinte classe de dados Kotlin:

data class PaintOrder(
@BsonId val id: Int,
val qty: Int,
val color: String,
val vendor: List<String>,
val rating: Int? = null
)

Os operadores de comparação query dados com base em comparações com valores em uma collection. Os operadores de comparação comuns incluem gt() para comparações "maior que", lte() para comparações "menor que ou igual a" e ne() para comparações "não igual a ".

O exemplo a seguir usa o método Filters.gt() para corresponder a todos os documentos em que o valor de qty é maior que 7 na collection paint_purchases :

val filter = Filters.gt("qty", 7)
val findFlow = collection.find(filter)
findFlow.collect { println(it) }
PaintOrder(id=1, qty=9, color=red, vendor=[A, E], rating=null)
PaintOrder(id=2, qty=8, color=purple, vendor=[B, D, F], rating=5)
PaintOrder(id=7, qty=8, color=green, vendor=[C, E], rating=7)

Os operadores lógicos query dados usando lógica aplicada aos resultados de operadores de nível de campo. Os operadores lógicos comuns incluem and() , em que todos os operadores devem ser verdadeiros, e or() , em que pelo menos um dos operadores deve ser verdadeiro.

O exemplo a seguir usa o método Filters.and() para corresponder a documentos em que o valor de qty é menor ou igual a 5 e o valor de color não é "pink" na collection paint_purchases :

val filter = Filters.and(Filters.lte("qty", 5), Filters.ne("color", "pink"))
val findFlow = collection.find(filter)
findFlow.collect { println(it) }
PaintOrder(id=3, qty=5, color=blue, vendor=[A, E], rating=null)
PaintOrder(id=5, qty=4, color=yellow, vendor=[A, B], rating=null)

Os operadores de array fazem query aos dados com base no valor ou na quantidade de elementos em um campo de array.

O exemplo a seguir usa o método Filters.size() para fazer a correspondência de documentos em que o tamanho da lista vendor é 3 na collection paint_purchases :

val filter = Filters.size("vendor", 3)
val findFlow = collection.find(filter)
findFlow.collect { println(it) }
PaintOrder(id=2, qty=8, color=purple, vendor=[B, D, F], rating=5)
PaintOrder(id=8, qty=7, color=black, vendor=[A, C, D], rating=null)

Os operadores de elemento consultam os dados com base na presença ou tipo de campo.

O exemplo a seguir usa o método Filters.exists() para fazer a correspondência de documentos que têm um rating na collection paint_purchases :

val filter = Filters.exists("rating")
val findFlow = collection.find(filter)
findFlow.collect { println(it) }
PaintOrder(id=2, qty=8, color=purple, vendor=[B, D, F], rating=5)
PaintOrder(id=4, qty=6, color=white, vendor=[D], rating=9)
PaintOrder(id=7, qty=8, color=green, vendor=[C, E], rating=7)

Os operadores de avaliação fazem query de dados em lógica de nível superior, como pesquisar de regex e texto.

O exemplo a seguir usa o método Filters.regex() para combinar documento que têm um color terminando com a letra "k" na collection paint_purchases :

val filter = Filters.regex("color", "k$")
val findFlow = collection.find(filter)
findFlow.collect { println(it) }
PaintOrder(id=6, qty=3, color=pink, vendor=[C], rating=null)
PaintOrder(id=8, qty=7, color=black, vendor=[A, C, D], rating=null)

Para obter mais informações sobre os operadores mencionados nesta aba, consulte as seguintes entradas manuais do servidor:

Voltar

Operações em massa

Próximo

Operações compostas