Se puede query para varios documentos en una colección llamando a la find()
método en un objeto MongoCollection. Pase un filtro de query al método find() para consultar y devolver los documentos que coincidan con el filtro en la colección. Si no incluyes un filtro, MongoDB devuelve todos los documentos de la colección.
Para obtener más información sobre cómo consultar MongoDB con el controlador de Kotlin, consulte nuestro Guía sobre la consulta de documentos.
También puede encadenar métodos al método find(), como sort(), que organiza los documentos coincidentes en un orden específico, y projection(), que configura los campos incluidos en los documentos devueltos.
Para más información sobre el sort() método, consulte nuestra guía sobre Ordenación. Para más información sobre el projection() método, consulte nuestra guía sobre Proyecciones.
El método find() devuelve una instancia de FindFlow, una clase que ofrece varios métodos para acceder, organizar y recorrer los resultados.
FindFlow también obtiene métodos de su interfaz delegada Flow de la librería Kotlin Coroutines. Puedes llamar al método collect() para iterar a través de los resultados obtenidos. También puede llamar a métodos terminales, como firstOrNull() para devolver el primer documento o null si no hay resultados, o first() para devolver el primer documento de la colección. Si ningún documento coincide con la query, llamar a first() lanza una excepción NoSuchElementException.
Para obtener más información sobre cómo acceder a datos de un flujo con el controlador de Kotlin, consulta nuestra guía sobre Acceso a Datos Desde un Flujo.
Ejemplo
El siguiente snippet encuentra e imprime todos los documentos que coinciden con una query en la colección movies. Utiliza los siguientes objetos y métodos:
Un filtro de query que se pasa al método
find(). El filtrolt()solo coincide con películas con una duración inferior a 15 minutos.Un ordenamiento que organiza los documentos devueltos en orden descendente por título ("Z" antes de "A")..
Una proyección que incluye los objetos en los campos
titleimdby y excluye el_idcampo utilizando el métodoexcludeId()auxiliar.
Nota
Este ejemplo se conecta a una instancia de MongoDB mediante un URI de conexión. Para saber más sobre cómo conectarse a su instancia de MongoDB, consulte la guía de conexión.
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 obtener información adicional sobre las clases y métodos mencionados en esta página, revisa la siguiente documentación API: