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

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.

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 filtro lt() 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 e imdb, e exclui o campo _id utilizando o método auxiliar excludeId().

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:

  • FindFlow

  • find()

Voltar

encontrar um