文档菜单
文档首页
/ / /
C#/.NET
/ / /

指定返回文档

在本页

  • 概述
  • 示例数据
  • 限制
  • 排序
  • 跳过
  • 组合限制、排序和跳过
  • 更多信息
  • API文档

在本指南中,您可以学习如何通过将以下方法链接到Find() 方法

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

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

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

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

本页上的示例使用以下 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);
}
V & T Restaurant
Mimis Restaurant & Bar
Venice Restaurant
Areo Restaurant
Tre Giovani Pizza & Pasta

提示

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

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

调用 Sort() 时,必须传递排序定义作为参数。您可以使用 Builders<T>.Sort.Ascending() 方法按从低到高的顺序排序值,或使用 Builders<T>.Sort.Descending() 方法按从高到低的顺序排序值。这两个方法都接受要排序的字段名作为参数。这些方法可以链式调用以按多个字段排序返回的文档。

以下示例返回所有具有 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);
}
(Lewis Drug Store) Locanda Vini E Olii
101 Restaurant And Bar
44 Sw Ristorante & Bar
900 Park
A Voce
...

要跳过指定数量的文档以返回查询结果,请使用由 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);
}
Trattoria Alba
Da Umberto Restaurant
La Strada Restaurant
Pasta Lovers Trattoria
Nanni Restaurant
Villa Mosconi Restaurant
Villa Berulia
Marco Polo Ristorante
Cafe Luna
Baraonda

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

以下示例返回具有 cuisine 值为 "意大利菜"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);
}
Acqua
Acqua Restaurant
Acqua Santa
Acquista Trattoria
Acquolina Catering
Adriatic Restaurant Pizzeria Bar
Adrienne'S Pizza Bar
Ai Fiori
Aita Restaurant
Al Di La

注意

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

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

有关指定查询的更多信息,请参阅指定查询指南。

要了解更多关于本指南中讨论的任何方法或类型,请参阅以下 API 文档

返回

监控数据更改