Visão geral
Neste guia, você pode aprender como usar o driver Kotlin para recuperar dados de uma coleção MongoDB usando operações de leitura. Você pode chamar o método find() para recuperar documentos que correspondam a um conjunto de critérios especificados em um filtro de queries.
Dados de amostra
Os exemplos neste guia usam a coleção movies no banco de dados sample_mflix dos conjuntos de dados de amostra do Atlas. Para aprender a criar um cluster gratuito do MongoDB Atlas e carregar os conjuntos de dados de amostra, consulte o guia Comece a usar.
A seguinte classe de dados Kotlin modela os documentos nesta coleção:
data class Movie(val title: String, val runtime: Int, val imdb: IMDB){ data class IMDB(val rating: Double) }
A seguinte classe de dados Kotlin modela os resultados retornados pelos exemplos neste guia:
data class Results(val title: String)
Encontrar operação
O método find() recupera documentos de uma coleção. Este método usa um filtro de query e retorna todos os documentos correspondentes. Um filtro de query é um documento que especifica os critérios que o driver usa para corresponder aos documentos da coleção.
Para saber mais sobre filtros de query, consulte o guia Especificar uma query .
Exemplo de encontrar um documento
O exemplo a seguir encadeia o método firstOrNull() à chamada de método find() para localizar o primeiro documento no qual o valor do campo name é "The Room":
val projectionFields= Projections.fields( Projections.include(Movie::title.name, Movie::imdb.name), Projections.excludeId() ) val resultsFlow = collection.withDocumentClass<Results>() .find(eq(Movie::title.name, "The Room")) .projection(projectionFields) .firstOrNull() if (resultsFlow == null) { println("No results found."); } else { println(resultsFlow) }
Exemplo de localização de documentos
Este exemplo utiliza o método find() para localizar todos os documentos nos quais o valor do campo runtime é menor que 15. A operação find() retorna um objeto FindFlow , que você pode iterar usando o método collect(), conforme mostrado no exemplo a seguir:
val projectionFields= Projections.fields( Projections.include(Movie::title.name, Movie::imdb.name), Projections.excludeId() ) val resultsFlow = collection.withDocumentClass<Results>() .find(lt(Movie::runtime.name, 15)) .projection(projectionFields) resultsFlow.collect { println(it) }
Observação
Localizar todos os documentos
Para encontrar todos os documentos em uma coleção, passe um filtro vazio para o método find() :
val resultsFlow = collection.withDocumentClass<Results>() .find()
Modificar comportamento de localização
Você pode modificar o comportamento do método find() encadeando métodos a uma instância FindFlow. A tabela a seguir descreve os métodos comumente usados para modificar query:
Método | Descrição |
|---|---|
| Limita o número de documentos a serem devolvidos por lote. O valor padrão é Para saber mais sobre o tamanho do lote , consulte cursor.batchSize() no manual do MongoDB Server . |
| Define as opções de agrupamento para a query. |
| Processa cada elemento no fluxo e aplica o Lambda fornecido. |
| Especifica uma string para anexar à query. Isso pode ajudar você a rastrear e interpretar a operação nos logs do servidor e nos dados do perfil. |
| Retorna o primeiro documento que corresponde à query ou lança um |
| Retorna o primeiro documento que corresponde à query ou |
| Especifica o índice a ser usado para a query. |
| Limita o número de documentos a serem retornados da query. |
| Define o número de documentos a ignorar. |
| Define os critérios de classificação a serem aplicados à query. |
O exemplo a seguir encadeia o método limit() para limitar o número de documentos retornados pela query para 10:
val projectionFields= Projections.fields( Projections.include(Movie::title.name, Movie::imdb.name), Projections.excludeId() ) val resultsFlow = collection.withDocumentClass<Results>() .find() .projection(projectionFields) .limit(10)
Para obter uma lista completa dos métodos que modificam o comportamento do find(), consulte a classe FindFlow na documentação da API do driver Kotlin .
Informações adicionais
Para saber mais sobre filtros de queries, consulte Especificar uma query.
Documentação da API
Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API: