对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Docs 菜单

查找文档

在本指南中,您可以学习如何使用Kotlin Sync驱动程序通过读取操作从MongoDB集合中检索数据。您可以调用 find() 方法来检索与查询筛选条件中指定的一设立条件匹配的文档。

本指南中的示例使用来自 Atlas 示例数据集sample_restaurants 数据库中的 restaurants 集合。要了解如何创建免费的 MongoDB 部署并加载示例数据集,请参阅 MongoDB入门指南。

此集合中的文档由以下Kotlin数据类建模:

data class Restaurant(
val name: String,
val cuisine: String
)

find() 方法从集合中检索文档。此方法采用查询筛选条件并返回所有匹配的文档。查询筛选条件是一个文档,其中指定了驱动程序用于匹配集合中的文档的条件。

如需学习;了解有关查询筛选器的更多信息,请参阅“指定查询”指南。

以下示例将 first() 方法链接到 find() 方法调用,以查找 cuisine字段的值为 "Spanish" 的第一个文档:

val results = collection.find(eq(Restaurant::cuisine.name, "Spanish")).first()

上一示例中的 find() 操作会返回一个MongoDB文档,您可以打印该文档,如以下示例所示:

val results = collection.find(eq(Restaurant::cuisine.name, "Spanish")).first()
println(results)
Restaurant(name=Tropicoso Club, cuisine=Spanish)

以下示例使用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 Server手册中的游标.batchSize()。

collation()

设置查询的排序规则选项。

comment()

指定附加到查询的字符串。这可以帮助您跟踪和解释服务器日志和配置文件数据中的操作。

first()

返回与查询匹配的第一个文档;如果不存在匹配的文档,则抛出 MongoClientException

firstOrNull()

返回与查询匹配的第一个文档,如果不存在匹配的文档,则返回 null

hint()

指定用于查询的索引。

limit()

限制查询返回的文档数量。

skip()

设置要跳过的文档数。

sort()

定义要应用查询的排序条件。

以下示例链接了 limit() 方法,将查询返回的文档数量限制为 10

val results = collection
.find(eq(Restaurant::cuisine.name, "Spanish"))
.limit(10)

有关修改find() 行为的方法的完整列表,请参阅 类的API文档。FindIterable

如需了解有关查询过滤器的更多信息,请参阅指定查询

要查看使用Kotlin 同步驱动程序检索文档的可运行代码示例,请参阅查找文档。

要进一步了解本指南所讨论的任何方法或类型,请参阅以下 API 文档: