Docs Menu
Docs Home
/ /

Buscar documentos

En esta guía, aprenderá a usar el controlador Kotlin para recuperar datos de una colección de MongoDB mediante operaciones de lectura. Puede llamar al find() método para recuperar documentos que coinciden con un conjunto de criterios especificados en un filtro de consulta.

Los ejemplos de esta guía utilizan la colección movies en la base de datos sample_mflix de la Conjuntos de datos de muestra de Atlas. Para aprender a crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, consulte la guía de introducción.

La siguiente clase de datos de Kotlin modela los documentos de esta colección:

data class Movie(val title: String, val runtime: Int, val imdb: IMDB){
data class IMDB(val rating: Double)
}

La siguiente clase de datos de Kotlin modela los resultados devueltos por los ejemplos de esta guía:

data class Results(val title: String)

El find() método recupera documentos de una colección. Este método utiliza un filtro de consulta y devuelve todos los documentos coincidentes. Un filtro de consulta es un documento que especifica los criterios que utiliza el controlador para buscar coincidencias en los documentos de la colección.

Para obtener más información sobre los filtros de consulta, consulte la Especifique una guía de consulta.

El siguiente ejemplo encadena el método firstOrNull() a la llamada al método find() para encontrar el primer documento en el que el valor del campo name es "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)
}
Movie(title=The Room, runtime=99, imdb=IMDB(rating=3.7))

Este ejemplo utiliza el método find() para encontrar todos los documentos en los que el valor del campo runtime es menor que 15. La operación find() devuelve un objeto FindFlow, que puedes iterar utilizando el método collect(), como se muestra en el siguiente ejemplo:

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) }
Movie(title=Meshes of the Afternoon, runtime=14, imdb=IMDB(rating=8.0))
Movie(title=The Band Concert, runtime=9, imdb=IMDB(rating=7.9))
Movie(title=What's Opera, Doc?, runtime=7, imdb=IMDB(rating=8.3))
...

Nota

Encuentre todos los documentos

Para encontrar todos los documentos en una colección, pasa un filtro vacío al método find():

val resultsFlow = collection.withDocumentClass<Results>()
.find()

Puede modificar el comportamiento del método find() encadenando métodos a una instancia FindFlow. La siguiente tabla describe los métodos más comunes para modificar consultas:

Método
Descripción

batchSize()

Limits the number of documents to return per batch. To learn more about batch size, see cursor.batchSize() in the MongoDB Server manual.

collation()

Sets the collation options for the query.

collect()

Processes each element in the flow and applies the given lambda.

comment()

Specifies a string to attach to the query. This can help you trace and interpret the operation in the server logs and in profile data.

first()

Returns the first document that matches the query or throws a MongoClientException if no matching documents exist.

firstOrNull()

Returns the first document that matches the query or null if no matching documents exist.

hint()

Specifies the index to use for the query.

limit()

Limits the number of documents to be returned from the query.

skip()

Sets the number of documents to skip.

sort()

Defines the sort criteria to apply to the query.

El siguiente ejemplo encadena el método limit() para limitar la cantidad de documentos devueltos por la consulta a 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 obtener una lista completa de los métodos que modifican el comportamiento de,find() consulte la clase FindFlow en la documentación de la API del controlador Kotlin.

Para más información sobre los filtros de query, consultar Especificar una query.

Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API:

Volver

Insertar documentos

En esta página