Retrieve Data
Overview
在本指南中,您可以学习;了解如何使用Kotlin驾驶员从MongoDB 数据库检索数据。您可以执行读取操作,从MongoDB检索数据。
读取操作启用您能够执行以下任务:
示例样本数据
以下部分的示例演示如何管理罐装油漆的客户订单。对于每个订单,您都需要追踪颜色和数量,它们与 orders
集合中文档中的 color
和 qty
字段相对应:
{ "_id": 1, "color": "purple", "qty": 10 } { "_id": 2, "color": "green", "qty": 8 } { "_id": 3, "color": "purple", "qty": 4 } { "_id": 4, "color": "green", "qty": 11 }
该数据由以下Kotlin数据类进行建模:
data class PaintOrder( val id: Int, val qty: Int, val color: String )
查找操作
使用查找操作检索 MongoDB 中现有数据的子集。您可以指定要返回哪些数据,包括要检索哪些文档、以什么顺序检索它们以及要检索多少个文档。
要执行查找操作,请对 MongoCollection
的实例调用 find()
方法。此方法在集合搜索与您提供的查询过滤相匹配的文档。有关如何指定查询的更多信息,请参阅“指定查询”指南。
例子
您想知道哪些订单包含大于 3
但小于 9
罐的油漆。
运行以下代码以查找符合条件的订单:
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)
要学习;了解有关 Filters
构建器的详情,请参阅 过滤器构建器 指南。
聚合操作
使用聚合操作对数据运行聚合管道。聚合管道是产生聚合结果的多阶段转换。
要执行聚合操作,请在 MongoCollection
的实例上调用 aggregate()
方法。此方法接受聚合表达式以按顺序运行。要执行聚合,您可以定义聚合阶段来指定如何匹配文档、重命名字段和对值群组。要学习;了解更多信息,请参阅 聚合指南。
例子
您想通过查找购买次数最多的颜色来了解哪种油漆颜色最受欢迎。
您可以创建执行以下操作的聚合管道:
匹配
orders
集合中的所有文档按颜色分组订单
按颜色汇总数量字段
将结果按数量从高到低排序
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)
要学习;了解有关构建聚合管道的更多信息,请参阅服务器手册中的聚合。
要学习;了解有关此页面上提到的方法的更多信息,请参阅以下API文档: