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

Recuperar dados

Nesta página

  • Visão geral
  • Encontrar operação
  • Operação agregada

Neste guia, você pode aprender como recuperar dados de seu banco de dados MongoDB. Para recuperar dados, use operações de leitura.

As operações de leitura permitem que fazer o seguinte:

  • Recupere um subconjunto de documentos da sua coleção usando uma operação find

  • Executar transformações em documentos recuperados de sua coleção usando uma operação agregada

  • Monitore alterações em tempo real em seu banco de dados usando change streams

As seções a seguir contém exemplos de como o proprietário de uma loja de tintas administra os pedidos de seus clientes. Para cada pedido, o proprietário mantém o controle da cor e quantidade, que corresponde aos campos color e qty em sua collection de paint_order:

{ "_id": 1, "color": "purple", "qty": 10 }
{ "_id": 2, "color": "green", "qty": 8 }
{ "_id": 3, "color": "purple", "qty": 4 }
{ "_id": 4, "color": "green", "qty": 11 }

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
)

Utilize a operação de localizar para recuperar um subconjunto dos seus dados existentes no MongoDB. Você pode especificar os dados a serem retornados, inclusive quais documentos devem ser recuperados, em que ordem devem ser recuperados e quantos devem ser recuperados.

Para executar uma operação de localizar, ligue para o método find() em uma instância de um MongoCollection. Esse método pesquisa uma coleção de documentos que correspondam ao filtro de query que você fornece. Para obter mais informações sobre como especificar uma query, consulte nosso guia Especificar uma consulta.

O proprietário gostaria de saber quais pedidos contêm mais de três, mas menos de nove latas de tinta de sua coleção paint_order.

Para abordar este cenário, o proprietário encontra encomendas que correspondam aos critérios:

val filter = Filters.and(Filters.gt("qty", 3), Filters.lt("qty", 9))
val resultsFlow = collection.find(filter)
resultsFlow.collect { println(it) }
PaintOrder(id=2, qty=8, color=green)
PaintOrder(id=3, qty=4, color=purple)

Depois que o proprietário executa esta query, ele encontra dois pedidos que correspondem aos critérios.

Para obter mais informações sobre como criar filtros, consulte nosso guia Construtores de filtros.

Para obter um exemplo do find() executável, consulte nossa página Encontrar vários documentos.

Use a operação agregada para executar os estágios em uma aggregation pipeline. Uma aggregation pipeline é uma transformação em várias etapas que produz um resultado agregado.

Para executar uma operação agregada, chame o método aggregate() em uma instância de um MongoCollection. Este método aceita expressões de agregação para executar em sequência. Para realizar agregações, você pode definir estágios de agregação que especificam como fazer a correspondência entre documentos, renomear campos e agrupar valores. Para obter mais informações, consulte nosso guia de agregação.

O proprietário gostaria de saber qual cor de tinta é a mais comprada (maior quantidade vendida) de sua paint_order collection.

Para entender a situação, o proprietário cria uma aggregation pipeline que irá:

  • Corresponder a todos os documentos na collection paint_order

  • Agrupar pedidos por cores

  • Resume o campo de quantidade por cor

  • Ordenar os resultados pela quantidade mais alta para a mais baixa

data class AggregationResult(@BsonId val id: String, val qty: Int)
val filter = Filters.empty()
val pipeline = listOf(
Aggregates.match(filter),
Aggregates.group(
"\$color",
Accumulators.sum("qty", "\$qty")
),
Aggregates.sort(Sorts.descending("qty"))
)
val resultsFlow = collection.aggregate<AggregationResult>(pipeline)
resultsFlow.collect { println(it) }
PaintOrder(id=2, qty=8, color=green)
PaintOrder(id=3, qty=4, color=purple)

Depois que o proprietário executa a agregação, ele descobre que "verde" é a cor mais comprada.

Para obter mais informações sobre como construir um pipeline de agregação, consulte a página manual do servidor MongoDB em Agregação.

Para obter mais informações sobre os métodos descritos nesta página, consulte a seguinte documentação da API:

Voltar

Ler operações

Próximo

Acessar dados de um fluxo