Localizar vários documentos
Você pode executar uma query de vários documentos em uma coleção chamando o método find()
em um objeto MongoCollection
. Passe um filtro de query para o método find()
para consultar e retornar documentos que correspondam ao filtro na collection. Se você não incluir um filtro, o MongoDB retornará todos os documentos na collection.
Para obter mais informações sobre como fazer query no MongoDB com o driver Kotlin , veja nossoguia sobre como fazer query de documentos.
Você também pode encadear métodos para o método find()
, como sort()
, que organiza os documentos correspondentes em uma ordem especificada e projection()
, que configura os campos incluídos nos documentos retornados.
Para obter mais informações sobre o método de sort()
, veja nosso guia de classificação. Para obter mais informações sobre o método de projection()
, veja nosso guia de projeções
O método find()
retorna uma instância do FindFlow
, uma classe que oferece vários métodos para acessar, organizar e percorrer os resultados.
FindFlow
também obtém métodos de sua interface de delegado Flow
da biblioteca Kotlin corrotina. Você pode chamar o método collect()
para iterar os resultados buscados. Você também pode chamar métodos de terminal, como firstOrNull()
para retornar o primeiro documento ou null
se não houver resultados, ou first()
para retornar o primeiro documento da collection. Se nenhum documento corresponder à query, chamar first()
lançará uma exceção NoSuchElementException
.
Para obter mais informações sobre como acessar dados de um fluxo com o driver Kotlin, consulte nosso guia sobre como acessar dados de um fluxo.
Exemplo
O trecho a seguir encontra e imprime todos os documentos que correspondem a uma query na collection movies
. Ele usa os seguintes objetos e métodos:
Um filtro de query que é passado para o método
find()
. O filtrolt()
corresponde apenas a filmes com um tempo de duração inferior a 15 minutos.Uma classificação que organiza os documentos retornados em ordem decrescente por título ("Z" antes de "A").
Uma projeção que inclui os objetos nos campos
title
eimdb
, e exclui o campo_id
utilizando o método auxiliarexcludeId()
.
Observação
Esse exemplo se conecta a uma instância do MongoDB usando um URI de conexão. Para saber mais sobre como se conectar à sua instância do MongoDB, consulte o Guia de conexão.
import com.mongodb.client.model.Filters.lt import com.mongodb.client.model.Projections import com.mongodb.client.model.Sorts import com.mongodb.kotlin.client.coroutine.MongoClient import kotlinx.coroutines.runBlocking data class Movie(val title: String, val runtime: Int, val imdb: IMDB){ data class IMDB(val rating: Double) } data class Results(val title: String) fun main() = runBlocking { // Replace the uri string with your MongoDB deployment's connection string val uri = "<connection string uri>" val mongoClient = MongoClient.create(uri) val database = mongoClient.getDatabase("sample_mflix") val collection = database.getCollection<Movie>("movies") 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) .sort(Sorts.descending(Movie::title.name)) resultsFlow.collect { println(it) } mongoClient.close() }
Para obter mais informações sobre as classes e métodos mencionados nesta página, consulte a seguinte documentação da API: