Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/ / /
Kotlin Coroutine
/ / /

Retrieve Data

Neste guia, você pode aprender como recuperar dados de seu banco de dados MongoDB usando o driver Kotlin . Você pode realizar operações de leitura para recuperar dados do MongoDB.

As operações de leitura permitem executar as seguintes tarefas:

  • 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 de dados usando change streams

As seções a seguir incluem exemplos que demonstram como você pode gerenciar os pedidos de cliente de latas de tinta. Para cada pedido, você acompanha a cor e a quantidade, que correspondem aos campos color e qty em documentos na collection orders:

{ "_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 pela seguinte classe de dados de 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 o guia Especificar uma query.

Você deseja saber quais pedidos contêm mais de 3, mas menos de 9 latas de tinta.

Execute o seguinte código para encontrar pedidos 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)

Para saber mais sobre o construtor Filters, consulte o guia Construtores de filtros.

Para ver um exemplo do find() executável, consulte o exemplo de uso Encontrar vários documentos.

Use operações de agregação para executar um agregação pipeline em seus dados. Uma agregação pipeline é uma transformação em várias etapas que produz um resultado agregado.

Para executar uma operação de agregação , chame o método aggregate() em uma instância de 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 saber mais, consulte o guia de agregação.

Você deseja saber qual cor de tinta é a mais popular encontrando a cor que é mais comprada.

Você pode criar um pipeline de agregação que executa as seguintes ações:

  • Corresponder a todos os documentos na collection orders

  • 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=19, color=green)
PaintOrder(id=3, qty=14, color=purple)

Para saber mais sobre a construção de pipelines de agregação, consulte Agregação no manual do servidor.

Para saber mais sobre os métodos mencionados nesta página, consulte a seguinte documentação da API:

Voltar

Leia

Nesta página