检索数据
概述
在此指南中,您可以了解如何使用 Kotlin 同步驱动程序通过读取操作从 MongoDB 集合中检索数据。使用 find()
方法检索符合查询过滤器中指定的条件集的文档。
示例数据
本指南中的示例使用来自 sample_restaurants
数据库中的 restaurants
集合。Atlas 示例数据集。要了解如何创建免费的 MongoDB Atlas 集群并加载数据集,请参阅 Atlas 入门指南。
该集合中的文档由以下 Kotlin 数据类建模:
data class Restaurant( val name: String, val cuisine: String )
查找文档
find()
方法从集合中检索文档。此方法接受一个 查询过滤器 并返回所有匹配的文档。查询过滤器是一个文档,它指定驱动程序用于从集合中匹配文档的条件。
有关查询过滤器的更多信息,请参阅指定查询指南。
查找文档示例
以下示例使用 find()
方法查找所有 cuisine
字段的值为 "Spanish"
的文档。
val results = collection.find(eq(Restaurant::cuisine.name, "Spanish"))
在先前的示例中,find()
操作返回一个FindIterable
对象,您可以通过使用forEach()
方法迭代它,如下面的示例所示
val results = collection.find(eq(Restaurant::cuisine.name, "Spanish")) results.forEach { result -> println(result) }
Restaurant(name=Tropicoso Club, cuisine=Spanish) Restaurant(name=Beso, cuisine=Spanish) Restaurant(name=Sabor Latino Restaurant, cuisine=Spanish) ...
注意
查找所有文档
要查找集合中的所有文档,请将空过滤器传递给find()
方法
val results = collection.find()
修改查找行为
您可以通过将方法链接到find()
方法调用来修改find()
方法的行为。下表描述了用于修改查询的常用方法
方法 | 描述 |
---|---|
batchSize() | 限制每个批次返回的文档数量。有关批量大小的更多信息,请参阅MongoDB服务器手册中的cursor.batchSize()。 |
collation() | 设置查询的排序选项。 |
comment() | 指定要附加到查询的字符串。这可以帮助您在服务器日志和配置文件数据中跟踪和解释操作。有关查询注释的更多信息,请参阅MongoDB服务器手册中的$comment。 |
hint() | 指定用于查询的索引。 |
limit() | 限制从查询返回的文档数量。 |
maxTime() | 设置此操作在服务器上的最大执行时间。 |
skip() | 设置要跳过的文档数。 |
sort() | 定义要应用于查询的排序标准。 |
以下示例将limit()
和maxTime()
方法链接起来,以将查询返回的文档数量限制为10
,并在操作上设置最大执行时间为10000
毫秒
val results = collection .find(eq(Restaurant::cuisine.name, "Spanish")) .limit(10) .maxTime(10000)
要查看修改find()
方法行为的完整方法列表,请参阅FindIterable
类的API文档。
更多信息
要了解更多关于查询过滤器的信息,请参阅指定查询。
要查看使用Kotlin Sync驱动程序检索文档的可运行代码示例,请参阅从MongoDB读取数据。
API文档
要了解更多关于本指南中讨论的任何方法或类型的信息,请参阅以下API文档