对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

指定要返回的文档

在本指南中,您可以学习;了解如何通过将以下方法链接到 Find() 方法来指定从读取操作中返回哪些文档:

  • Limit() :指定从查询中返回的最大文档数

  • Sort() :指定返回文档的排序顺序

  • Skip() :指定在返回查询结果之前要跳过的文档数

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

本页上的示例使用以下 Restaurant 类作为集合中文档的模型:

[BsonIgnoreExtraElements]
public class Restaurant {
public ObjectId Id { get; set; }
[BsonElement("name")]
public string Name { get; set; }
[BsonElement("cuisine")]
public string Cuisine { get; set; }
}

要指定读取操作返回的最大文档数,请使用 IFindFluent 接口提供的 Limit() 方法。 调用 Find() 方法后,链接 Limit() 方法以修改操作的行为。

以下示例查找cuisine字段值为"Italian"的所有餐厅,并将结果限制为5文档:

var filter = Builders<Restaurant>.Filter.Eq("cuisine", "Italian");
var results = collection.Find(filter).Limit(5).ToList();
foreach (var result in results)
{
Console.WriteLine(result.Name);
}

提示

前面的示例根据文档在数据库中的自然顺序返回查询匹配的前五个文档。 以下部分介绍如何按指定顺序返回文档。

要按指定顺序返回文档,请使用 IFindFluent 接口提供的 Sort() 方法。 调用 Find() 方法后,链接 Sort() 方法以修改操作的行为。

调用 Sort() 时,必须将排序定义作为参数传入。 您可以使用 Builders<T>.Sort.Ascending() 方法构造排序定义,将值从低到高排序,或使用 Builders<T>.Sort.Ascending() 方法从高到低排序。 这两种方法都将排序依据的字段名作为参数。 可以链接这些方法以按多个字段对返回的文档进行排序。

以下示例返回 cuisine字段值为 "Italian" 的所有文档,按 name字段值的升序排序:

var filter = Builders<Restaurant>.Filter.Eq("cuisine", "Italian");
var sort = Builders<Restaurant>.Sort.Ascending("name");
var results = collection.Find(filter).Sort(sort).ToList();
foreach (var result in results)
{
Console.WriteLine(result.Name);
}

要在返回查询结果之前跳过指定数量的文档,请使用 IFindFluent 接口提供的 Skip() 方法。 调用 Find() 方法后,链接 Skip() 方法以修改操作的行为。

以下示例返回cuisine字段值为"Italian"的所有文档并跳过前10文档:

var filter = Builders<Restaurant>.Filter.Eq("cuisine", "Italian");
var results = collection.Find(filter).Skip(10).ToList();
foreach (var result in results)
{
Console.WriteLine(result.Name);
}

您可以将 Limit()Sort()Skip() 方法链接到单个 Find() 方法调用。 这允许您设立从读取操作返回的最大排序文档数,在返回之前跳过指定数量的文档。

以下示例返回 cuisine 值为 "Italian"5 文档。 结果按 name字段值升序排序,并跳过前 10 个文档:

var filter = Builders<Restaurant>.Filter.Eq("cuisine", "Italian");
var sort = Builders<Restaurant>.Sort.Ascending("name");
var results = collection.Find(filter).Limit(10).Sort(sort).Skip(10).ToList();
foreach (var result in results)
{
Console.WriteLine(result.Name);
}

注意

调用这些方法的顺序不会更改返回的文档。 .NET/ C#驱动程序会自动对调用重新排序,以首先执行排序操作,然后执行跳过操作,然后执行限制操作。

有关检索文档的更多信息,请参阅检索数据指南。

有关指定查询的更多信息,请参阅创建查询筛选器指南。

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