Overview
在本指南中,您可以学习;了解如何通过将以下方法链接到 find 方法来指定从读取操作中返回哪些文档:
limit: Specifies the maximum number of documents to return from a query
sort :指定返回文档的排序顺序
skip :指定在返回查询结果之前要跳过的文档数
样本数据
The examples in this guide use the restaurants collection in the sample_restaurants database from the Atlas sample datasets. To access this collection from your Ruby application, create a Mongo::Client object that connects to an Atlas cluster and assign the following values to your database and collection variables:
database = client.use('sample_restaurants') collection = database[:restaurants]
要学习如何创建免费的MongoDB Atlas 集群并加载示例数据集,请参阅MongoDB 入门指南。
Limit
要指定读取操作返回的最大文档数,应用对该操作应用 limit 选项。您可以通过将 limit setter 方法链接到 find 方法来设立此选项。
以下示例查找cuisine字段值为'Italian'的所有餐厅,并将结果限制为5文档:
filter = { cuisine: 'Italian' } collection.find(filter) .limit(5) .each { |doc| puts doc }
提示
前面的示例根据文档在数据库中的自然顺序返回查询匹配的前五个文档。 以下部分介绍如何按指定顺序返回文档。
Sort
要按指定顺序返回文档,应用sort 选项应用于读取操作。您可以通过将 sort setter 方法链接到 find 方法来设立此选项。
调用 sort 时,请传递对结果进行排序的字段和排序方向。排序方向值为 1 时,按从最低到最高的顺序排序;值为 -1 时,按从最高到最低的顺序排序。
以下示例返回 cuisine字段值为 'Italian' 的所有文档,按 name字段值的升序排序:
filter = { cuisine: 'Italian' } collection.find(filter) .sort(name: 1) .each { |doc| puts doc }
跳过
要在返回查询结果之前跳过指定数量的文档,应用skip 选项应用于读取操作。您可以通过将 skip setter 方法链接到 find 方法来设立此选项。
以下示例返回borough字段值为'Manhattan'的所有文档并跳过前10文档:
filter = { borough: 'Manhattan' } collection.find(filter) .skip(10) .each { |doc| puts doc }
组合限制、排序和跳过
您可以将 limit、sort 和 skip 方法链接到单个 find 方法调用。 这允许您设立从读取操作返回的最大排序文档数,在返回之前跳过指定数量的文档。
以下示例返回 cuisine 值为 'Italian' 的 5 文档。 结果按 name字段值升序排序,并跳过前 10 个文档:
filter = { cuisine: 'Italian' } collection.find(filter) .limit(5) .skip(10) .sort(name: 1) .each { |doc| puts doc }
注意
调用这些方法的顺序不会更改返回的文档。Ruby驱动程序会自动对调用重新排序,以首先执行排序操作,然后执行跳过操作,然后执行限制操作。
更多信息
有关检索文档的更多信息,请参阅“查找文档”指南。
有关指定查询的更多信息,请参阅“指定查询”指南。
API 文档
要学习;了解有关 find 方法及其选项的详情,请参阅API文档。