Overview
En esta guía, puedes aprender cómo recuperar datos de tu base de datos MongoDB utilizando el controlador de Kotlin. Puedes realizar operaciones de lectura para recuperar datos de MongoDB.
Las operaciones de lectura le permiten realizar las siguientes tareas:
Recupere un subconjunto de documentos de su colección mediante una operación de búsqueda
Realice transformaciones en los documentos recuperados de su colección mediante una operación de agregación
Monitoree los cambios en tiempo real en su base de datos usando Flujos de cambios
Datos de muestra para ejemplos
Las siguientes secciones incluyen ejemplos que demuestran cómo gestionar los pedidos de latas de pintura de los clientes. Para cada pedido, se registra el color y la cantidad, que corresponde a la color y qty campos en documentos de la colección orders:
{ "_id": 1, "color": "purple", "qty": 10 } { "_id": 2, "color": "green", "qty": 8 } { "_id": 3, "color": "purple", "qty": 4 } { "_id": 4, "color": "green", "qty": 11 }
Estos datos están modelados por la siguiente clase de datos de Kotlin:
data class PaintOrder( val id: Int, val qty: Int, val color: String )
Encontrar operación
Utilice la operación de búsqueda para recuperar un subconjunto de sus datos existentes en MongoDB. Puede especificar qué datos devolver, incluyendo qué documentos recuperar, en qué orden y cuántos recuperar.
Para realizar una operación de búsqueda, llame al find() método en una instancia MongoCollection de. Este método busca en una colección documentos que coincidan con el filtro de consulta especificado. Para obtener más información sobre cómo especificar una consulta, consulte la guía "Especificar una consulta".
Ejemplo
Desea saber qué pedidos contienen más de 3, pero menos de 9 latas de pintura.
Ejecuta el siguiente código para encontrar órdenes que cumplan con los criterios:
val filter = Filters.and(Filters.gt("qty", 3), Filters.lt("qty", 9)) val resultsFlow = collection.find(filter) resultsFlow.collect { println(it) }
PaintOrder(id=2, qty=8, color=green) PaintOrder(id=3, qty=4, color=purple)
Para obtener más información sobre el Filters generador, consulte la guía Generadores de filtros.
Para find() ver un ejemplo ejecutable de, consulte el ejemplo de uso de Buscar varios documentos.
Operación Agregada
Utilice operaciones de agregación para ejecutar una canalización de agregación en sus datos. Una canalización de agregación es una transformación de varias etapas que produce un resultado agregado.
Para realizar una operación de agregación, llame al aggregate() método en una instancia MongoCollection de. Este método acepta expresiones de agregación para ejecutarse en secuencia. Para realizar agregaciones, puede definir etapas de agregación que especifiquen cómo hacer coincidir documentos, renombrar campos y agrupar valores. Para obtener más información, consulte la guía de agregación.
Ejemplo
Quiere saber qué color de pintura es el más popular encontrando el color que se compra con más frecuencia.
Puede crear una canalización de agregación que realice las siguientes acciones:
Coincide con todos los documentos de la colección
ordersAgrupa pedidos por colores
Resume el campo de cantidad por color
Ordena los resultados por cantidad de mayor a menor
data class AggregationResult( val id: String, val qty: Int) val filter = Filters.empty() val pipeline = listOf( Aggregates.match(filter), Aggregates.group( "\$color", Accumulators.sum("qty", "\$qty") ), Aggregates.sort(Sorts.descending("qty")) ) val resultsFlow = collection.aggregate<AggregationResult>(pipeline) resultsFlow.collect { println(it) }
PaintOrder(id=2, qty=19, color=green) PaintOrder(id=3, qty=14, color=purple)
Para obtener más información sobre la construcción de canales de agregación, consulte Agregación en el manual del Servidor.
Para obtener más información sobre los métodos mencionados en esta página, consulte la siguiente documentación de API: